HostBinding en Angular: controla estilos desde directivas
Clase 21 de 80 • Curso de Angular 4
Contenido del curso
Introducción a Angular 4
Setup del Ambiente de Trabajo
Conceptos Básicos
- 9

Para qué nos sirven los Módulos y Componentes
08:10 min - 10

Tipos de Data Binding y String Interpolation
05:05 min - 11

Property Binding
06:04 min - 12

Event Binding
03:04 min - 13

ngModel y two way binding en Angular
05:12 min - 14

Directivas en Angular 4 y ngFor
07:39 min - 15

Cómo usar ngIf en Angular 4.0
03:04 min - 16

Instalando librerías con NPM (Google Maps)
06:48 min
Directivas
Angular UI
Ruteo
- 24

Qué hace el router en Angular 4
03:11 min - 25

Implementación de Rutas en el Proyecto
07:36 min - 26

Href vs router link: navegación angular
02:27 min - 27

Resaltando el link activo con CSS para indicar visualmente en que componente nos encontramos
01:53 min - 28

Parámetros de ruta con routerLink en Angular
06:01 min - 29

Parámetros tipo Query
03:53 min - 30

Creando una vista de detalle para el proyecto
09:06 min - 31

Página de contacto Angular desde cero
07:45 min
Servicios
- 32

Servicios en Angular para compartir datos
00:58 min - 33

Creando nuestro propio servicio
07:11 min - 34

Configurando Firebase en nuestro proyecto
05:12 min - 35

Guardando Records en Firebase
12:20 min - 36

Obteniendo records desde Firebase
08:40 min - 37

Obteniendo coordenadas usando Geocoding
13:45 min - 38

Reto: Crear una vista para editar records
09:29 min - 39

Mostrando marcadores en el Mapa de Google
03:02 min
Conexión Remota (Http y Sockets)
Pipes
Animaciones en Angular
Testing en Angular
Autenticación y Protección de Rutas
- 59

Cómo funcionan los JSON Web Tokens
03:05 min - 60

Preparación de vistas para login y registro
11:58 min - 61

Registrando usuarios
07:29 min - 62

Loggeando usuarios
07:18 min - 63

Guardias canActivate en Angular: Proteger rutas con autenticación
11:09 min - 64

Cómo integrar Facebook login con Firebase
09:08 min - 65

Logout en Angular con Firebase
05:28 min
RxJS
- 66

Cómo funciona RxJS con metáfora de oficina
02:09 min - 67

Mostrar email del usuario logueado en Angular
06:32 min - 68

Uso de los Observables
04:30 min - 69

Cómo implementar type ahead con Observables y RxJS
10:43 min - 70

Implementar formularios reactivos con type ahead
07:58 min - 71

Cómo rellenar campos automáticamente con Google
01:28 min
Publicando nuestro proyecto
Fin del curso
Sesiones en vivo
Contenido Bonus
Aprende a dominar cómo una directiva en Angular puede escuchar eventos del usuario y modificar el DOM al mismo tiempo. Con HostBinding y HostListener, podrás resaltar elementos según su interacción, controlando la opacidad con incrementos por clic y manteniendo un contador de clics de forma clara y mantenible.
¿Qué es host binding y por qué es clave en Angular?
Usa HostBinding para editar atributos o estilos del elemento host directamente desde la directiva. Se importa desde Angular Core y permite vincular una propiedad de tu clase con un atributo del HTML, como un estilo.
- Vincula la propiedad del componente al DOM del host.
- Controla estilos como opacity sin tocar el HTML directamente.
- Ideal para resaltar elementos según interacción del usuario.
¿Cómo se declara el binding al estilo opacity?
Se define una propiedad numérica y se vincula al estilo del host. El rango de la propiedad CSS opacity va de 0 a 1: 0 es transparente y 1 es totalmente opaco. Aquí se inicia en 0.1 para que el elemento empiece casi transparente.
import { Directive, HostBinding, HostListener } from '@angular/core';
@Directive({ selector: '[contarClicks]' })
export class ContarClicksDirective {
@HostBinding('style.opacity') opacity: number = 0.1;
// ...
}
- Propiedad vinculada: style.opacity.
- Tipo de dato: número.
- Valor inicial: 0.1.
¿Cómo combinar host listener y host binding para responder a clics?
Con HostListener puedes escuchar eventos como el clic y, a la vez, actualizar el estilo mediante la propiedad vinculada. Cada clic incrementa la opacidad en 0.1, además de actualizar el contador de clics existente.
¿Cómo se incrementa la opacidad en cada clic?
Se captura el evento click y se suma 0.1 a la propiedad vinculada. Así, los primeros clics llevan la opacidad de 0.1 a 0.2, 0.3, 0.4 y así sucesivamente.
@HostListener('click')
onClick(): void {
this.opacity += 0.1; // Incrementa la opacidad en cada clic.
// También se incrementa el contador de clics existente.
}
- Evento observado: click.
- Cambio visual progresivo: de casi transparente a opaco.
- Sin modificar el HTML del componente.
¿Qué problema hubo con el ancla y cómo se solucionó?
Aunque el conteo de clics funcionaba, la opacidad se veía siempre en 1. La causa: al elemento de ancla no se le aplicó correctamente ese estilo. La solución fue mover la directiva del al para que la opacidad sí cambiara visualmente.
¿Qué ajustes se hicieron en la directiva y el template?
Se actualizó el uso de la directiva para aplicarla al elemento li en lugar del ancla. Luego, tras refrescar, todos iniciaron con opacidad 0.1 y aumentaron con cada clic hasta ser totalmente opacos.
- Aplicar la directiva al li en vez del ancla.
- Verificar el cambio en el componente principal al usar la directiva.
- Confirmar que la opacidad responde al clic y llega hasta 1.
Como cierre, se anticipa el siguiente módulo de estilos para mejorar la interfaz visual de forma notable. ¿Qué dudas o retos te surgieron al combinar HostBinding y HostListener? Comparte tu caso en los comentarios.