我有一棵树,里面有一系列的项目。我像这样组织了picklist更改事件。
checklistSelection = new SelectionModel<TodoItemFlatNode>(true);
this.checklistSelection.changed.subscribe(data => {
this.selectedEmit.emit(this.checklistSelection.selected.map(s => s.item));
});以前,用户只能通过单击来选择树元素。一切都很好。我现在添加了一个“全选”按钮。
public SelectAllNode(): void {
this.checklistSelection.clear();
if (this.isCheckedAllNode) {
for (let dataNode of this.treeControl.dataNodes) {
this.checklistSelection.select(dataNode);
}
} else {
for (let dataNode of this.treeControl.dataNodes) {
this.checklistSelection.deselect(dataNode);
}
}
}我的树上有3000多个项目。当用户点击这个按钮时,会发生3000个事件--这是非常不切实际的。请告诉我如何最好地组织所有元素的选择?例如,取消订阅某个事件,然后在结束时再次订阅它?
发布于 2020-12-14 15:43:22
当我这样做的时候,这个问题似乎消失了:
public SelectAllNode(): void {
this.checklistSelection.clear();
if (this.isCheckedAllNode) {
this.checklistSelection.select(...this.treeControl.dataNodes);
} else {
this.checklistSelection.deselect(...this.treeControl.dataNodes);
}
}但我不知道这有多好。
https://stackoverflow.com/questions/65284767
复制相似问题