2016-10-04 5 views
3

作成するマークアップに他のカスタムコンポーネントが含まれるコンポーネントでマークアップを動的に生成しようとしています。カスタムHTML要素に関連する動的マークアップを角2で生成する

<my-component></my-component> 

とmyComponent.ts

ngOnInit(){ 
    const el: HTMLElement = this.elementRef.nativeElement; 

    let labels = ['one', 'two', 'three']; 
    labels.forEach((label) => { 
     let b = document.createElement('my-subcomponent'); 
     el.appendChild(b); 
    }); 
} 

mySubcomponent.htmlテンプレートで:の線に沿って何か

<span>test</span>

<my-subcomponent>要素がマークアップにレンダリングしない子どもたちが、裸で、<span>テンプレートなし。私はAngular1の$compileサービスに相当するものがないと思っています。間違ったライフサイクルの瞬間に正しいコードを実行しています。誰かが私に何か光を当てていただければ幸いです。

答えて

2

Angular2は、動的に追加されたHTMLに対して、バインディングや、コンポーネントセレクタやディレクティブセレクタを処理しません。 Angular2はHTMLを静的にコンポーネントテンプレートに追加するだけです。

リンクについて Angular 2 dynamic tabs with user-click chosen components

+0

おかげで示すように次の例のようにコンポーネントを動的に追加することができます。この戦略では、C1、C2、C3(plunkr内)に属性を付けて、それらを「入力」として受け入れる方法がありますか? – user776686

+0

いいえ、動的に追加されたコンポーネントで入力と出力を使用することはできません。リンクされた答えは、データを強制的に入出力する方法を示しています。 –

+0

あなたの説明をありがとう – user776686

関連する問題