@HostListener
@HostListener
es un decorador en Angular que permite a las directivas y componentes escuchar eventos del DOM en el elemento al que están asociados.
📌 Importancia de @HostListener
@HostListener
Escuchar Eventos del DOM: Facilita la captura de eventos como clics, teclas presionadas, movimientos del mouse, etc.
Responde a Eventos Específicos: Permite ejecutar lógica específica en respuesta a eventos del usuario.
🌟 Ejemplo de Uso en una Directiva
import { Directive, ElementRef, HostListener, Input } from '@angular/core';
@Directive({
selector: '[appCheckBrokenImage]'
})
export class CheckBrokenImageDirective {
@Input() defaultImage: string;
constructor(private el: ElementRef) {}
@HostListener('error')
onError() {
const element = this.el.nativeElement;
if (this.defaultImage) {
element.src = this.defaultImage;
} else {
element.src = 'assets/default-image.png'; // Ruta a una imagen por defecto
}
}
}
📑 Sintaxis de @HostListener
@HostListener
@HostListener(eventName: string, [args: string[]])
eventName
: El nombre del evento del DOM que deseas escuchar.args
(opcional): Una lista de argumentos que deseas pasar al método manejador de eventos.
🌟 Ejemplo Detallado de @HostListener
@Directive({
selector: '[appClickTracker]'
})
export class ClickTrackerDirective {
@HostListener('click', ['$event'])
handleClick(event: Event) {
console.log('Element clicked:', event);
}
}
⌨️ Escuchar Eventos de Teclas
@Directive({
selector: '[appKeyTracker]'
})
export class KeyTrackerDirective {
@HostListener('document:keydown', ['$event'])
handleKeyDown(event: KeyboardEvent) {
console.log('Key pressed:', event.key);
}
}
Última actualización