我正尝试将初始检查值获取到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);
}
}
}
}
但是那没有帮助。 有人可以帮我吗?
非常感谢!
谢谢!
答案 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);
}
}