In Angular le direttive sono oggetti che permettono di attaccare una funzionalità a oggetti HTML esistenti. Ad esempio, tramite una direttiva possiamo modificare un pulsante per aggiungere l'icona o gli stili CSS dibase da applicare a tutti i pulsanti. Per fare questo dobbiamo ricorrere a due classi molto importanti: ElementRef e Renderer2.
La prima permette l'accesso all'oggeto HTML a cui abbiamo applicato la direttiva, mentre la seconda ne permette la manipolazione astraendo il DOM dal nostro codice. Grazie a questa classe possiamo lavorare su piattaforme HTML che non siano per forza un browser.
In questo esempio molto semplificato, applichiamo uno stile al controllo al mouseover e l rimuoviamo al mouseout. Ovviamente potremmo raggiungere lo stesso effetto usando solamente i CSS, ma lo scopo dello script è mostrare il funzionamento dele due classi.
export class MyDirective { constructor(private el: ElementRef, private renderer: Renderer2) {} @HostListener('mouseover') onMouseOver() { const control = this.el.nativeElement.querySelector('.card-text'); this.renderer.setElementStyle(control, 'display', 'block'); } @HostListener('mouseout') onMouseOut() { let control = this.el.nativeElement.querySelector('.card-text'); this.renderer.setElementStyle(control, 'display', 'none'); } }
La proprietà nativeElement di ElementRef permette di accere all'oggetto nativo della piattaforma su cui gira l'applicazione mentre il metodo setElementStyle permette di modificarne le proprietà CSS. Nii prossimi script vedremo altri utilizzi di direttive e di queste classi.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Testare l'invio dei messaggi con Event Hubs Data Explorer
Come migrare da una form non tipizzata a una form tipizzata in Angular
Miglioramenti agli screen reader e al contrasto in Angular
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Evitare il flickering dei componenti nel prerender di Blazor 8
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Gestire la cancellazione di una richiesta in streaming da Blazor
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Creazione di componenti personalizzati in React.js con Tailwind CSS