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
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Eseguire i worklow di GitHub su runner potenziati
Creare una libreria CSS universale: Immagini
Filtering sulle colonne in una QuickGrid di Blazor
Migliorare la sicurezza dei prompt con Azure AI Studio
Ricevere notifiche sui test con Azure Load Testing
Utilizzare QuickGrid di Blazor con Entity Framework
Creare una libreria CSS universale: Cards
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Utilizzare Azure Cosmos DB con i vettori
Recuperare l'ultima versione di una release di GitHub
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel