In Angular, la gestione degli eventi è piuttosto banale in quanto possiamo associare all'evento un metodo del component. Tuttavia, questa tecnica è poco efficiente nei casi in cui vogliamo creare comportamenti custom su più controlli. Supponiamo ad esempio, di voler mostrare un tooltip ogni volta che una textbox prende il focus. Se dovessimo associare un metodo per ogni textbox per ogni component finiremmo per scrivere una quantità di codice eccessiva, ridondante e poco manutenibile. In questi casi possiamo creare una direttiva che gestisca l'evento focus dell'oggetto HTML e che esegua il codice che vogliamo. Successivamente, applichiamo questa direttiva ai componenti così da usarla dove serve.
Per attaccarsi all'evento di un oggetto, dobbiamo utilizzare il decorator HostListener al quale passiamo in input il nome dell'evento e un array di parametri che vengono poi passati al metodo che gestisce l'evento. In questo caso, la parola chiave $event specifica che viene passato in input l'oggetto event nativo di JavaScript.
@Directive({ selector: '[myDirective]', }) export class MyDirective { @HostListener('focus', ['$event']) public onFocus(event: any): void { //showtooltip } }
Per utilizzare la direttiva, basta aggiungerla come attributo all'oggetto HTML. Il nome dell'attributo è quello specificato nella proprietà selector del decorator Directive.
<input type="text" myDirective />
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Definire stili a livello di libreria in Angular
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Gestire undefined e partial nelle reactive forms di Angular
Eseguire attività con Azure Container Jobs
Implementare l'infinite scroll con QuickGrid in Blazor Server
Come migrare da una form non tipizzata a una form tipizzata in Angular
Utilizzare database e servizi con gli add-on di Container App
Eseguire query verso tipi non mappati in Entity Framework Core
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Eseguire i worklow di GitHub su runner potenziati
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Sfruttare lo streaming di una chiamata Http da Blazor