首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用selectionmodel实现所有树项目的选择?

如何使用selectionmodel实现所有树项目的选择?
EN

Stack Overflow用户
提问于 2020-12-14 14:52:43
回答 1查看 36关注 0票数 0

我有一棵树,里面有一系列的项目。我像这样组织了picklist更改事件。

代码语言:javascript
复制
checklistSelection = new SelectionModel<TodoItemFlatNode>(true);
this.checklistSelection.changed.subscribe(data => {
  this.selectedEmit.emit(this.checklistSelection.selected.map(s => s.item));
});

以前,用户只能通过单击来选择树元素。一切都很好。我现在添加了一个“全选”按钮。

代码语言:javascript
复制
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个事件--这是非常不切实际的。请告诉我如何最好地组织所有元素的选择?例如,取消订阅某个事件,然后在结束时再次订阅它?

EN

回答 1

Stack Overflow用户

发布于 2020-12-14 15:43:22

当我这样做的时候,这个问题似乎消失了:

代码语言:javascript
复制
public SelectAllNode(): void {
  this.checklistSelection.clear();
  if (this.isCheckedAllNode) {
    this.checklistSelection.select(...this.treeControl.dataNodes);
  } else {
    this.checklistSelection.deselect(...this.treeControl.dataNodes);
  }
}

但我不知道这有多好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65284767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档