[英]How to know if a mat-option is selected or not from a click event?
我有多个mat-select
,想知道已单击的mat-option
是否已被选中或取消选中。 当(click)
被触发时传递的$event.target
对象没有我可以使用的selected
属性。
<mat-form-field>
<mat-select [formControl]="control" multiple>
<mat-option
*ngFor="let option of options"
[value]="option"
(click)="foo($event)"
>
{{ option }}
</mat-option>
</mat-select>
</mat-form-field>
public foo(event) {
const hasBeenChecked = ???? // How do I know if my clicked option has been checked or unchecked?
}
提前致谢
您可以通过从MatOption对象中读取它来获取单击选项的选定状态,如下所示:
<mat-option #matOption (click)="foo(matOption.selected)"></mat-option>
您可以在<mat-select>
上使用selectionChange()
事件,这将为您提供您选择的选项。
<mat-select (selectionChange)="foo($event)">
最佳做法是直接从 FormControl 获取更改。 如果您console.log
您使用的 FormControl: [formControl]="control"
,您将看到它包含最后选择的选项。 如果您有多个 mat-select,并希望控制它们,我的建议是将它们包装在FormGroup
,然后为每个选择使用属于该FormGroup
FormControl
。
使用 Angular 11.0 可以在 mat-option 标签中添加 (click) 事件,如下所示:
<mat-option (click)="handleSelected(option)" *ngFor="let option of filteredOptions | async" [value]="option">
你得到显示的值
您已经在使用表单控件。 您选择的所有选项都在那里,存储在一个数组中:
foo(x) {
// an array of your selections
console.log(this.control.value)
}
因此,您无需跟踪它是未选中还是已选中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.