javascript - Ändra eller klick-händelse för mat-button-toggle
Jag har en mat-button-toggle-group som har 5 mat-button-toggle. Jag behöver utlösa ett event vid klick eller vid ändring av värdet, även om jag föredrar att det är ett klick-event.
Dokumentationen som tillhandahålls här visar att det inte finns någon klickhändelse, men det finns en ändringshändelse.
Jag har också försökt med ändringshändelsen (som visas nedan), men händelsen utlöses inte.
<mat-button-toggle-group #group="matButtonToggleGroup" [(ngModel)]="rowAction">
<mat-button-toggle value="raw_swift_msg" (change)="onValChange(value)" matTooltip="View Message">
<i class="fa fa-eye" style="color:#455A64" aria-hidden="true"></i>
</mat-button-toggle>
<mat-button-toggle value="message_comment" matTooltip="Message Comment">
<i class="fa fa-comments" style="color:#455A64" aria-hidden="true"></i>
</mat-button-toggle>
<mat-button-toggle value="link_trade" hasAccess id="LinkMessagePopup" matTooltip="Link Message">
<i class="fa fa-link" style="color:#455A64" aria-hidden="true"></i>
</mat-button-toggle>
<mat-button-toggle value="audit_trail" matTooltip="View Audit">
<i class="fa fa-history" style="color:#455A64" aria-hidden="true"></i>
</mat-button-toggle>
<mat-button-toggle hasAccess id="MessagePopup" value="move_message" matTooltip="Move message">
<i class="fa fa-exchange" style="color:#455A64" aria-hidden="true"></i>
</mat-button-toggle>
<mat-button-toggle value="log" matTooltip="View log">
<i class="fa fa-book" style="color:#455A64" aria-hidden="true"></i>
</mat-button-toggle>
</mat-button-toggle-group>
I min .ts-fil
import {MatButtonToggleModule} från '@angular/material/button-toggle';
onValChange(val: string) {
this.selectedVal = val;
}
Hur utlöser man ovanstående ändringsfunktion?
Svar #1
det borde vara :
html :
<mat-button-toggle-group #group="matButtonToggleGroup">
<mat-button-toggle value="raw_swift_msg" (change)="onValChange($event.value)" matTooltip="View Message">
<i class="fa fa-eye" style="color:#455A64" aria-hidden="true"></i>
</mat-button-toggle>
<mat-button-toggle (change)="onValChange($event.value)" value="message_comment" matTooltip="Message Comment" >
<i class="fa fa-comments" style="color:#455A64" aria-hidden="true"></i>
</mat-button-toggle>
</mat-button-toggle-group>
komponent:
onValChange(value){
console.log(value)
}
kolla detta fungerande stackblitz
Svar #2
En enklare lösning för att få en ändringshändelse på hela mat-button-toggle-gruppen är att sätta en ändringshändelse på gruppen, istället för på varje växlingsknapp.
<mat-button-toggle-group (change)="onValChange($event.value)">
<mat-button-toggle value="bold">Bold</mat-button-toggle>
<mat-button-toggle value="italic">Italic</mat-button-toggle>
<mat-button-toggle value="underline">Underline</mat-button-toggle>
</mat-button-toggle-group>
Nu kan du lyssna på händelsen i din komponent:
onValChange(value) {
console.log(value);
}
Funkade för mig.
