如何在选中的复选框上显示额外选项?
How do I show extra option on checked checkbox?
我有下拉菜单:
<ng-select [items]="items" bindLabel="name" ngModel name="dropdown" formControlName="dropdown" required></ng-select>
这是项目:
items = [
{
id: 1,
name: 'Option 1'
},
{
id: 2,
name: 'Option 2'
},
{
id: 3,
name: 'Option 3'
},
{ //extra option
id: 4,
name: 'Option 4'
},
]
我想隐藏额外的项目(选项 4)。当用户单击复选框时,会显示额外选项。我该怎么做?
我的复选框:
<mat-checkbox class="example-margin" ngModel name="checkbox" formControlName="checkbox">Show hidden option!</mat-checkbox>
提前致谢!
只需添加将在 ng-select 中使用的额外数组 itemsToShow
。
原始数组将仅用作数据源。
然后在复选框更改时分配给 itemsToShow
原始数组或按 id 字段过滤一个(取决于当前的复选框值)。
组件:
export class DemoComponent implements OnInit {
checkbox = new FormControl(false);
items = [
{ id: 1, name: 'Option 1' },
{ id: 2, name: 'Option 2' },
{ id: 3, name: 'Option 3' },
{ id: 4, name: 'Option 4'},
];
itemsToShow = [];
itemIdToHide = 4;
ngOnInit(): void {
this.itemsToShow = this.getFilteredItems([this.itemIdToHide]);
this.checkbox.valueChanges.subscribe((checked) => {
if (checked) {
this.itemsToShow = [...this.items];
} else {
this.itemsToShow = this.getFilteredItems([this.itemIdToHide]);
}
});
}
private getFilteredItems(idsToHide: number[]): { id: number; name: string }[] {
return this.items.filter((item) => !idsToHide.includes(item.id));
}
}
模板:
<ng-select [items]="itemsToShow" bindLabel="name" ngModel name="dropdown" formControlName="dropdown" required></ng-select>
<mat-checkbox class="example-margin" [formControl]="checkbox">Show hidden option!</mat-checkbox>
注意,getFilteredItems()
方法可以按多个 ID 进行过滤。
我有下拉菜单:
<ng-select [items]="items" bindLabel="name" ngModel name="dropdown" formControlName="dropdown" required></ng-select>
这是项目:
items = [
{
id: 1,
name: 'Option 1'
},
{
id: 2,
name: 'Option 2'
},
{
id: 3,
name: 'Option 3'
},
{ //extra option
id: 4,
name: 'Option 4'
},
]
我想隐藏额外的项目(选项 4)。当用户单击复选框时,会显示额外选项。我该怎么做?
我的复选框:
<mat-checkbox class="example-margin" ngModel name="checkbox" formControlName="checkbox">Show hidden option!</mat-checkbox>
提前致谢!
只需添加将在 ng-select 中使用的额外数组 itemsToShow
。
原始数组将仅用作数据源。
然后在复选框更改时分配给 itemsToShow
原始数组或按 id 字段过滤一个(取决于当前的复选框值)。
组件:
export class DemoComponent implements OnInit {
checkbox = new FormControl(false);
items = [
{ id: 1, name: 'Option 1' },
{ id: 2, name: 'Option 2' },
{ id: 3, name: 'Option 3' },
{ id: 4, name: 'Option 4'},
];
itemsToShow = [];
itemIdToHide = 4;
ngOnInit(): void {
this.itemsToShow = this.getFilteredItems([this.itemIdToHide]);
this.checkbox.valueChanges.subscribe((checked) => {
if (checked) {
this.itemsToShow = [...this.items];
} else {
this.itemsToShow = this.getFilteredItems([this.itemIdToHide]);
}
});
}
private getFilteredItems(idsToHide: number[]): { id: number; name: string }[] {
return this.items.filter((item) => !idsToHide.includes(item.id));
}
}
模板:
<ng-select [items]="itemsToShow" bindLabel="name" ngModel name="dropdown" formControlName="dropdown" required></ng-select>
<mat-checkbox class="example-margin" [formControl]="checkbox">Show hidden option!</mat-checkbox>
注意,getFilteredItems()
方法可以按多个 ID 进行过滤。