【发布时间】:2019-01-05 21:14:52
【问题描述】:
我的场景如下:
我要实现的是:
- 当用户点击All时,所有选项都会被选中,当用户再次点击All时,所有选项都会被取消。
- 如果 All 选项被选中并且用户单击除
All之外的任何其他复选框,则应取消选择 All 和单击的复选框。 - 当用户一一选择 4 个选项时,应选择全部。
HTML 文件
<mat-select placeholder="User Type" formControlName="UserType" multiple>
<mat-option *ngFor="let filters of userTypeFilters" [value]="filters.key">
{{filters.value}}
</mat-option>
<mat-option #allSelected (click)="toggleAllSelection()" [value]="0">All</mat-option>
</mat-select>
TS 文件
this.searchUserForm = this.fb.group({
userType: new FormControl('')
});
userTypeFilters = [
{
key: 1, value: 'Value 1',
},
{
key: 2, value: 'Value 2',
},
{
key: 3, value: 'Value 3',
},
{
key: 4, value: 'Value 4',
}
]
toggleAllSelection() {
if (this.allSelected.selected) {
this.searchUserForm.controls.userType
.patchValue([...this.userTypeFilters.map(item => item.key), 0]);
} else {
this.searchUserForm.controls.userType.patchValue([]);
}
}
现在,如何实现第二点和第三点
Stackblitz 是:https://stackblitz.com/edit/angular-material-with-angular-v5-znfehg?file=app/app.component.html
【问题讨论】:
-
我看到第二个 senario 作品对吗?
-
no.. 只有第一个有效.. 第二个选项是,如果选择了 All,然后用户取消选择任何选项,则应取消该选项和 All 选项
标签: angular-material2 angular6 multi-select