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
Gestire i dati con Azure Cosmos DB Data Explorer
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Utilizzare Containers in .NET Aspire
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Configurare automaticamente un webhook in Azure DevOps
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Change tracking e composition in Entity Framework
Introduzione alle Container Queries
Scrivere selettori CSS più semplici ed efficienti con :is()
Ridurre il reflow cambiando il CSS
Anonimizzare i dati sensibili nei log di Azure Front Door