2016-07-28 7 views
1

Angular2で 実行時にテンプレートで宣言された子コンポーネントを探したいと思います。 どうすればいいですか?例については :実行時にViewChildを呼び出す方法は?

@Component({ 

template: ` 
<cmp1 *ngIf=expression></cmp1> 
<cmp2 *ngIf=!expression></cmp2> 
    ` 

}) 
export class Component3{ 

findChild(){ 
// How to find cmp2 
} 

} 
+0

達成しようとしていることを示すコードを投稿してください。 –

答えて

1

あなたは、「実行時」が、これはそれが通常行うの方法ですと何を意味するかわからない:

@Component({ 
template: ` 
<cmp1 #cmp *ngIf=expression></cmp1> 
<cmp2 #cmp *ngIf=!expression></cmp2> 
` 
}) 
export class Component3{ 

    @ViewChildren('cmp') cmp:QueryList; 

    findChild(){ 
    return this.cmp.toArray()[0]; 
    } 
} 

Component1ニーズがインポートされます。

も参照してくださいangular 2/typescript : get hold of an element in the template

+0

ngIf、ngIfには2つのコンポーネントのうちの1つのみが表示されます。 expression = trueと言うことができます。 cmp1がレンダリングされます。cmp2は使用できません。 実行時に式をfalseに変更すると、cmp1がDOMから削除され、cmp2がレンダリングされます。 このシナリオではどのようにしてcmp2を取得しますか? – almog

+0

今、私はあなたが何を意味するかを見ます。私は自分の答えを更新しました。より良い方法は、前に示した '@ViewChild()'を使用し、 'expression'をメソッドに移動し、' find() '{return cmp1;}のように' findChild'でこのメソッドをチェックすることです。 } else {return cmp2;} ' –

関連する問題