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
Utilizzare l nesting nativo dei CSS
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Rendere le variabili read-only in una pipeline di Azure DevOps
Selettore CSS :has() e i suoi casi d'uso avanzati
Gestire progetti NPM in .NET Aspire
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Creare una libreria CSS universale: Clip-path
Creare una libreria CSS universale: Cards
Introduzione alle Container Queries
Testare il failover sulle region in Azure Storage


