我在我要设置有条件地 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;
}
我不太清楚问题是什么。您是否要有条件地设置选项值之一?或者您是否正在尝试有条件地设置框本身的值。 [(values)]="hidden"
代表盒子的值。因此,只要该值与选项值之一匹配,它就会显示为默认值。添加更多信息或stackblitz示例。
您正在通过使用双重绑定mat-select
设置[(value)]="hidden"
的值。因此,如果您从hidden
代码更改了.ts
属性,则将触发onSelectionChange
,因为该值已更改。我建议您使用双重绑定策略或事件捕获策略来防止这些问题。