Recursion Angular2递归树全部展开

Recursion Angular2递归树全部展开,recursion,angular,treeview,Recursion,Angular,Treeview,我有递归树组件,我想从父组件展开所有单击节点,我该怎么做?更多详情请参阅plunker 我说这个方法, expandAll(){ console.log("expanded all"); } 只需将expandAll()方法添加到TreeComponent即可展开所有节点,并对所有嵌套的TreeComponent组件调用expandAll() 您可以通过添加 @ViewChildren(TreeComponent) subTrees:QueryList<TreeCom

我有递归树组件,我想从父组件展开所有单击节点,我该怎么做?更多详情请参阅plunker

我说这个方法,

   expandAll(){
    console.log("expanded all");
  }

只需将
expandAll()
方法添加到
TreeComponent
即可展开所有节点,并对所有嵌套的
TreeComponent
组件调用
expandAll()

您可以通过添加

@ViewChildren(TreeComponent) subTrees:QueryList<TreeComponent>;

只需将
expandAll()
方法添加到
TreeComponent
即可展开所有节点,并对所有嵌套的
TreeComponent
组件调用
expandAll()

您可以通过添加

@ViewChildren(TreeComponent) subTrees:QueryList<TreeComponent>;

过了一会儿,我想我明白了。我刚刚在
TreeComponent
中添加了一个
@Input()

@Input() expandAll: boolean;
并将
*ngIf
递归条件替换为:

[hidden]="(!expanded[i] && !expandAll) || (expanded[i] && expandedAll)"
它需要做更多的工作(把所有的东西都折叠起来并不能像它应该做的那样工作),但它是按照我想要的方式工作的


过了一会儿,我想我明白了。我刚刚在
TreeComponent
中添加了一个
@Input()

@Input() expandAll: boolean;
并将
*ngIf
递归条件替换为:

[hidden]="(!expanded[i] && !expandAll) || (expanded[i] && expandedAll)"
它需要做更多的工作(把所有的东西都折叠起来并不能像它应该做的那样工作),但它是按照我想要的方式工作的


您的Plunk为空,其中唯一的组件不是递归组件。非常抱歉,请立即检查。您的Plunk为空,其中唯一的组件不是递归组件。非常抱歉,请立即检查。好的,但是我如何从父树组件调用应用内组件方法?抱歉,我不理解您的评论的意思。从我对你问题的理解来看,这就是我的答案应该解释的。这就是你的意思,对吗?我如何从应用程序组件调用expandAll父树组件?我在中显示了两种方式(一种是仅查看,另一种带有第二对按钮的方式是使用
@ViewChild()
)它看起来你的plnkr对我不起作用(按钮),你保存了最终版本吗?好,但我如何从父树组件调用应用程序内组件方法?对不起,我不明白你的评论是什么意思。从我对你问题的理解来看,这就是我的答案应该解释的。这就是你的意思,对吗?如何从app component调用expandAll父树组件?我在中显示了两种方式(一种是仅查看,另一种带有第二对按钮的方式是使用
@ViewChild()
)它看起来你的plnkr对我不起作用(按钮),你保存了最终版本了吗?