如何预选垫树中的复选框?

时间:2019-08-06 14:36:16

标签: angular rxjs angular-material

我正在尝试预选此mat-tree示例的复选框:https://stackblitz.com/edit/material-tree-checklist。由于某些原因,我无法在组件初始化时预先选择复选框。

我正在尝试将两个rxjs observables与CombineLatest结合使用。第一个包含mat-tree的数据节点。第二个包含应预选的数据节点。这是我无法使用的解决方案:https://stackblitz.com/edit/material-tree-checklist-rj4ryd?file=app/app.component.ts

Mat-tree本身正在与this.allData$一起使用,但是在使用this.selectedData$初始化组件时选中选中的复选框不起作用。

  combineLatest(this.allData$, this.selectedData$)
      .subscribe(val => {
        this.dataSource.data = val[0]
        val[1].map(x => this.nodeSelectionToggle(x))
   }
  )

1 个答案:

答案 0 :(得分:1)

根据您的代码,您正在尝试选择GameNode中的selectedData实例[从allData]中。请注意不同的new GameData。两者都指向不同的内存位置。

您必须从GameNode中选择allData实例。尝试像这样更改combineLatest

combineLatest(this.allData$, this.selectedData$)
      .subscribe(val => {
        const data = val[0];
        this.dataSource.data = data;
        this.nodeSelectionToggle(data[1]);
      }
     );

有效的堆叠闪电战:https://stackblitz.com/edit/material-tree-checklist-re96eq?file=app/app.component.ts

希望有帮助。