设置默认值时防止触发材质多重选择-Angular 7

问题描述 投票:0回答:2

我在我要设置有条件地 TS文件中的默认值的地方有多个选择。我还使用onSelectionChange检测选择中的更改。问题是,当我设置默认值时会触发onSelectionChange,如何防止这种情况发生?

HTML

<mat-select [compareWith]="compareWithFunc" [(value)]="hidden" multiple>
  <mat-option
    *ngFor="let value of values"
    (onSelectionChange)="onSelectionChanged($event, value)"
    [value]="clause"
    >{{ value.name }}</mat-option
  >
</mat-select> 

TS

 public onSelectionChanged(event: MatOptionSelectionChange, clause:any): void {
    if (event.source.selected) {}
  }

  public compareWithFunc(a, b) {
    return a.name === b.name;
  }
angular angular-material
2个回答
0
投票

我不太清楚问题是什么。您是否要有条件地设置选项值之一?或者您是否正在尝试有条件地设置框本身的值。 [(values)]="hidden"代表盒子的值。因此,只要该值与选项值之一匹配,它就会显示为默认值。添加更多信息或stackblitz示例。


0
投票

您正在通过使用双重绑定mat-select设置[(value)]="hidden"的值。因此,如果您从hidden代码更改了.ts属性,则将触发onSelectionChange,因为该值已更改。我建议您使用双重绑定策略或事件捕获策略来防止这些问题。

© www.soinside.com 2019 - 2024. All rights reserved.