2016-09-26 54 views
1

我有遞歸樹組件,我想展開父組件上點擊的所有節點,我該怎麼做?更多細節在plunker。Angular2遞歸樹全部展開

Plunker

我談論這個方法:

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

你plunker是空的,在它的唯一部件是不是遞歸的。 – Supamiu

+0

我很抱歉,現在試着檢查它。 – ulou

回答

0

一段時間,我想我弄明白之後。我只是增加了一個@Input()TreeComponent

@Input() expandAll: boolean; 

和更換*ngIf遞歸的條件:

[hidden]="(!expanded[i] && !expandAll) || (expanded[i] && expandedAll)" 

它需要多一點的工作(崩潰是如何都應該不工作),但它的工作原理那我想怎麼樣。

Plnker

0

只需添加一個expandAll()方法是展開所有節點,並呼籲所有嵌套TreeComponent組件expandAll()TreeComponent

您可以通過添加

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

得到所有嵌套TreeComponent成分,並呼籲孩子的方法類似

expandAll() { 
    for(var subTree of this.subTrees.toArray()) { 
    subTree.expandAll(); 
    } 
} 
+0

好的,但是我怎樣才能從父級TreeComponent調用app組件方法? – ulou

+0

對不起,我不明白你的意見是什麼意思。從我的理解你的問題,這是我的答案應該解釋。 –

+0

這就是你的意思https://plnkr.co/edit/5Q5obfcW1mhsYe9jFXZo?p=preview,對吧?我怎樣才能從應用程序組件中調用expandAll的父樹組件? – ulou