2017-11-22 13 views
1

私はこの素朴な例のhttps://embed.plnkr.co/RtZvxv2rPFpLPZGndS0g/を持っています。ここでは、ContentComponentとHeaderComponentの2つのコンポーネントが作成されています。私はこのようなContentComponentテンプレートでHeaderComponentセレクタを参照したい:オンザフライで作成されたネストされたコンポーネント

ngOnInit() { 
    this.template = "<div>This is the {{ name }}</div><app-header></app-header>"; 
    this.compileTemplate(); 
} 

残念ながら、これは動作していないと、コンパイラは文句:アプリ-ヘッダは、既知の要素ではありません。

誰もこの問題を解決する方法を知っていますか?同じ最終結果を得る別の方法はありますか? HeaderComponentが

を宣言したことも、インポートされたどちらのために角度がそれを解決するためにapp-header要素を見つけることができません

+0

実行時にAngular "stuff"を追加することはできません。プレーンなHTMLのみです。実行時にコンポーネントをコンパイルする必要があるかどうかを確認します。 https://stackoverflow.com/questions/38888008/how-can-i-use-create-dynamic-template-to-compile-dynamic-component-with-angular –

+2

https://plnkr.co/edit/2zMCh6elJxh2RInqB6ZZを参照してください。 ?p = preview – yurzui

+1

は@ yurzuiの解決策ですか? –

答えて

2

あなたは宣言し、輸出HeaderComponent

@NgModule({ 
    declarations: [ HeaderComponent], 
    exports: [HeaderComponent] 
}) 
export class SharedModule { } 

、最終的には、単にあなたにそれをインポートしSharedModuleを作成することができます動的モジュール

@NgModule({ 
    declarations: [decoratedCmp], 
    imports: [SharedModule] <============ this line 
}) 
class RuntimeContentModule { } 

Plunker Example

関連する問題