我需要替换树上的一些数据,然后运行 treemodel.update() ,然后选择一个节点。树在那个时候已经被渲染了。这是我的代码:
@ViewChild('resulttree') resulttree: ElementRef;
updateResulttree(id: number) {
for (let node of this.resultNodes) {
node.children[0].children = node.children[0].children.filter(childnode => childnode.selected);
node.children[1].children = node.children[1].children.filter(childnode => childnode.selected);
}
this.resulttree.treeModel.update();
setTimeout(() => {
const someNode = this.resulttree.treeModel.getNodeBy(node => node.data.tree_node_id === id);
someNode.setActiveAndVisible();
}, 100);
}
这个带有 setTimeout 的解决方法有效,但效果不好。如果 update() 方法耗时超过 100 毫秒,“someNode”将未定义。
任何想法如何使它更好?
Angular 10,AngularTreeCompoment 10.0.2 https://angular2-tree.readme.io/docs/getting-started