角度-物料检查清单的初始检查值

时间:2019-03-24 20:30:01

标签: angular angular-material2

我正尝试将初始检查值获取到mat-tree组件中,如以下StackBlitz中所述:https://stackblitz.com/edit/material-tree-checklist-1cqqha

我将只有两个级别的节点。因此,如果按以下方式检查节点,我就尝试切换它:

  update(value){
    this.treeData = value;
    this.dataSource.data = this.treeData;

    for(let itemG of this.treeData) {
      for(let item of itemG.value) {
        if(item.checked) {
          this.checklistSelection.toggle(item);
          this.checklistSelection.select(item);
        }
      }
    }
  }

但是那没有帮助。 有人可以帮我吗?

非常感谢!

谢谢!

2 个答案:

答案 0 :(得分:0)

经过调试和调试,我发现工作代码是:

  update(value){
    this.treeData = value;
    this.dataSource.data = this.treeData;

    for(let itemG of this.treeData) {
      for(let item of itemG.children.value) {
        if(item.checked) {
          this.checklistSelection.toggle(item);
        }
      }
    }
  }

一切都按预期进行:)

有人可以提出更好的解决方案吗?

答案 1 :(得分:0)

您应该已经在ngOnInit中拥有dataChange订阅。 添加checkAll方法(在dataSource.data更改后调用),该方法会将所有项目标记为选中。

ngOnInit(): void {
  
  ... // removed the rest of the code for brevity
  
  this._database.dataChange.subscribe(data => {
      this.dataSource.data = data;
      this.checkAll();  // this is added
    });
}

checkAll(): void {
    for(let item of this.treeControl.dataNodes) {
      this.checklistSelection.select(item);
    }
  }