我正在处理angular2 tree component,我最初将树显示为
var nodes =
[
{
name: 'a',
isExpanded: true,
children: [
{
name: 'b',
isExpanded: true,
children: [
{ name: 'c', }
]
},
]
},
{
name: 'b',
isExpanded: true,
children: [
{
name: 'a',
children: [
{ name: 'c' },
]
}
]
}
];
这个工作绝对正常,树按钮点击展开显示我正在更改整个树,新树看起来像这样
changeTree{
nodes =
[
{
name: 'new Node a',
isExpanded: true,
children: [
{
name: ' new Node b',
isExpanded: true,
children: [
{ name: 'new Node c', }
]
},
]
},
{
name: 'new Node b',
isExpanded: true,
children: [
{
name: 'new Node a',
children: [
{ name: ' new Node c' },
]
}
]
}
];
this.tree.treeModel.update();
this.tree.treeModel.expandAll();
}
我尝试过使用this.tree.treeModel.update(); this.tree.treeModel.expandAll(); 但是当加载新树时,树仍然没有扩展。
任何帮助都将不胜感激。
答案 0 :(得分:4)
您可以做的是将updateData
事件添加到树根(docs)
<tree-root #tree [nodes]="nodes" (updateData)="onUpdateData($event)"></tree-root>
每次更新树模型时都会触发此事件。在此事件中,您可以调用expandAll方法来展开树
// component.ts
onUpdateData(tree){
tree.treeModel.expandAll();
}
答案 1 :(得分:-1)
只是一句警告 - 如果您有一棵深树,在onUpdateData($ event)中调用expandAll会降低浏览器的速度。
相反,我选择性地扩展节点。