垫按钮切换的更改或单击事件

pra*_*lli 3 html javascript typescript angular-material angular

我有一个mat-button-toggle-group,其中有5个mat-button-toggle。我需要在点击或更改val时触发一个事件,尽管我更喜欢将其作为点击事件。

此处提供的文档显示没有单击事件,但是有更改事件。

我也尝试过change事件(如下所示),但未触发该事件。

 <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>
Run Code Online (Sandbox Code Playgroud)

在我的.ts文件中

从'@ angular / material / button-toggle'导入{MatButtonToggleModule};

onValChange(val: string) {
 this.selectedVal = val;
}   
Run Code Online (Sandbox Code Playgroud)

如何触发上述变更功能?

Rac*_*hit 16

在整个 mat-button-toggle-group 上获取更改事件的更简单的解决方案是在组上设置更改事件,而不是在每个切换按钮上设置更改事件。

<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>
Run Code Online (Sandbox Code Playgroud)

现在您可以在组件中监听该事件:

onValChange(value) {
    console.log(value);
}
Run Code Online (Sandbox Code Playgroud)

为我工作。


Fat*_*zli 7

它应该是 :

的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>
Run Code Online (Sandbox Code Playgroud)

零件:

onValChange(value){
     console.log(value)
}
Run Code Online (Sandbox Code Playgroud)

检查此工作stackblitz