2017-03-31 15 views
2

コンポーネント内のすべてのテンプレート(TemplateRef)のコレクションを取得するにはどうすればよいですか? ViewChildではうまく動作しますが、ViewChildrenは未定義です...<template>要素の@ViewChildren(TemplateRef)は定義されていません

私はこの解決策を使用します。questionPlunkerの完全な例です。

@Component({ 
    selector: 'my-app', 
    template: ` 
      <div> 
       <template #model>...</template> 
       <template #color>...</template> 
      </div>` 
    }) 
    export class App { 
    @ViewChild('model') model; 
    @ViewChild('color') color; 
    @ViewChildren(TemplateRef) templates: QueryList<TemplateRef>; 

    ngAfterContentInit() { 
    console.log(this.templates); // undefined 
    console.log(this.model); // TemplateRef_ {...} 
    } 
} 

私はそれが列のためのテンプレートを定義することが可能ですグリッド・コンポーネントのtemplatesを必要としています。残念なことにNGコンテンツのdoesn't supportダイナミックプロジェクションなので、テンプレートでそれを達成しようとしています。

答えて

1

console.log('child', this.templates);ngAfterViewInit()に移動すると機能します。

ngAfterViewInit() { 
    console.log('child', this.templates); 
} 

私はそれがngAfterContentInit()でも働くことを期待していました。このAngularバージョンのngAfterContentInit()ngAfterViewInit()より前に実行されているようです。私はこれが早い時期に他の方法だったと確信していました。

Plunker example

関連する問題