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
Eseguire una ExecuteUpdateAsync senza usare un'expression con Entity Framework
Disabilitare la telemetria nella CLI di GitHub
Eseguire i pre-commit hook di git con dependabot
Azure SQL Database per dev: tutte le novità da non perdere
Microsoft Fabric: la piattaforma unificata per l'ecosistema dati moderno
GitHub Quick Review per la valutazione dello stato di compliance dell'organizzazione aziendale
Building Custom Developer Agents
Semplificare la gestione dei modelli con Azure AI Foundry Model Router
Utilizzare i command service nei test con .NET Aspire
Avviare rapidamente un container con Azure Container Apps Express
Usare il metodo nameof con un tipo generico in C# 14
Evitare la compressione degli artefatti in un workflow di GitHub


