2016-09-26 15 views
1

再帰ツリーコンポーネントがあり、親コンポーネントからクリックするとすべてのノードを展開したいのですが、どうすればいいですか?プランナーの詳細。Angular2再帰ツリーをすべて展開する

Plunker

私はこの方法について話:

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

あなたplunkerは空ですが、それの唯一のコンポーネントは、再帰的なものではありません。 – Supamiu

+0

ごめんなさい、今すぐチェックしてみてください。 – ulou

答えて

0

のようなチャイルズ上のメソッドを呼び出すことができます。私はちょうどTreeComponentの1以上@Input()追加:

@Input() expandAll: boolean; 

をしてまで*ngIf再帰条件を置き換え:

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

そのは、(どのようにそれが必要なすべてのdoesntの仕事を崩壊)もう少し作業が必要ですが、それは動作しますそれが私が望んでいた方法。

Plnker

0

ただ、すべてのノードが展開され、すべてのネストされたTreeComponentコンポーネントにexpandAll()を呼び出しTreeComponentexpandAll()メソッドを追加します。

あなたは

@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

関連する問題