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
Usare lo spread operator con i collection initializer in C#
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Le novità di Angular: i miglioramenti alla CLI
Utilizzare gli snapshot con Azure File shares
Load test di ASP.NET Core con k6
Reactive form tipizzati con modellazione del FormBuilder in Angular
Routing statico e PreRendering in una Blazor Web App
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Evitare la command injection in un workflow di GitHub
Disabilitare automaticamente un workflow di GitHub (parte 2)
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Utilizzare un service principal per accedere a Azure Container Registry