【发布时间】:2021-01-21 03:28:29
【问题描述】:
我正在使用 angular2-multiselect-dropdown。每当我在下拉菜单中单击“SelectAll”时,它不会全选,因为它也发出 deSelectAll 事件,因此它也调用 onDeSelectAll() 函数。因此它没有实现选择下拉列表中所有项目的默认功能。全选复选框也未选中。请告诉我如何才能完成这项工作,因为我很快就有截止日期了。
ts:
ngOnInit() {
this.dropdownList = [
{ id: 1, itemName: "Pacemaker1", value: "Pacemaker1" },
{ id: 2, itemName: "Pacemaker2", value: "Pacemaker2" },
{ id: 4, itemName: "Pacemaker2", value: "Pacemaker2" },
];
this.selectedItems = [];
this.dropdownSettings = {
singleSelection: false,
text: "Select devices",
selectAllText: "Select All",
unSelectAllText: "UnSelect All",
enableSearchFilter: true,
badgeShowLimit: 3,
};
this.getStudies();
}
onItemSelect(item: any) {
this.selectedItems.push(item);
}
OnItemDeSelect(item: any) {
this.selectedItems = this.selectedItems.filter((el) => el.id !== item.id);
}
onSelectAll(items: any) {
console.log("select", items);
this.selectedItems = [];
this.selectedItems.push(items);
}
onDeSelectAll(items: any) {
console.log("deselect", items);
this.selectedItems = [];
}
html:
<div class="form-group">
<label class="form-col-form-label">
Associated Devices
</label>
<angular2-multiselect
class="form-control"
[data]="dropdownList"
[settings]="dropdownSettings"
(onSelect)="onItemSelect($event)"
(onDeSelect)="OnItemDeSelect($event)"
(onSelectAll)="onSelectAll($event)"
(onDeSelectAll)="onDeSelectAll($event)"
formControlName="associatedDevices">
</angular2-multiselect>
</div>
请在此处检查复制的功能 https://stackblitz.com/edit/angular-ivy-esame2?file=src%2Fapp%2Fapp.component.html
【问题讨论】:
-
尝试使用 [(ngModel)]="selectedItems" 而不是 this.selectedItems.push(items)。
-
@ChiruAdi 即使这样做,它也不起作用。我无法执行 SelectAll 操作。无法选中全选框
-
听起来控件本身正在取消选择以开始,您必须等到该事件之后才能选择它们。或者它应该是可配置的行为。实际上它不应该做任何事情。这就是为什么我不使用第三部分控制,太多的惊喜。您可以将普通选择与 [(ngModel)] 绑定或 mat-select 一起使用。这是一个 3 部分系列dev.to/jwp/angular-validation-using-ngmodel-55gf
-
没错,我刚刚发现这是包本身的问题。 4.6.3 版本稳定且正在运行。
-
面临同样问题的人请帮助我,即使@4.6.3 版本在我的情况下不起作用
标签: javascript angular typescript