如果更改整个树,则Angular2树默认不展开

时间:2017-12-29 04:59:36

标签: angular tree

我正在处理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(); 但是当加载新树时,树仍然没有扩展。

任何帮助都将不胜感激。

2 个答案:

答案 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会降低浏览器的速度。

相反,我选择性地扩展节点。