我正在尝试预选此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))
}
)
答案 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
希望有帮助。