Molto spesso capita di dover creare pulsanti con un HTML complesso per dare la possibilità di aggiungere icone a destra o sinistra del test, per dare uniformità di stile o per aggiungere determinati comportamenti. Per evitare di scrivere codice HTML duplicato per ogni pulsante, possiamo creare un component che al suo interno include tutto il codice HTML e di logica necessario al corretto funzionamento del pulsante.
Il nostro component deve esporre un evento che corrisponde al click del pulsante interno. Se chiamiamo l'evento click, Angular eseguirà l'evento due volte, una per il pulsante e una per il tag che viene renderizzato in HTML per il component.
<!--component--> <button class="btn btn-primary btn-sm" (click)="bubbleClick($event)"> <i [class]="iconFirst" *ngIf="iconFirst"></i> <ng-content></ng-content> <i [class]="iconLast" *ngIf="iconLast"></i> </button>import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core'; @Component({ selector: 'app-button', templateUrl: './button.component.html' }) export class ButtonComponent implements OnInit { @Output() click = new EventEmitter(); bubbleClick(event: Event) { this.click.emit(); } }
Come detto, in questo caso l'HTML dichiara un evento click per il pulsante dentro il component, e ne dichiarerà un altro per il tag che contiene il component (
bubbleClick(event: Event) { event.stopPropagation(); this.click.emit(); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Miglioramenti agli screen reader e al contrasto in Angular
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Usare le collection expression per inizializzare una lista di oggetti in C#
Utilizzare Azure Cosmos DB con i vettori
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Disabilitare automaticamente un workflow di GitHub
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Evitare il flickering dei componenti nel prerender di Blazor 8
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
I più letti di oggi
- Visualizzare contenuti Fullscreen con HTML5
- Leggere e scrivere su cookie tramite Blazor
- Richiamare programmaticamente le operazioni di aggiornamento, eliminazione e inserimento di FormView, DetailsView e GridView
- Realizzare siti sicuri con ASP.NET Web Pages
- Il web control DropDownList di ASP.NET
- Un helper method per replicare un template per ogni proprietà con ASP.NET MVC
- Operazioni di selezione su una DataTable
- Dependency injection in ASP.NET MVC 5 con Ninject
- Aumentare la scalabilità di ASP.NET Core Web API con caching client side
- Accedere con ASP.NET ad un documento XML creato dall'oggetto recordset di ADO e ASP