2016-10-14 6 views
2

角2では、私はコンポーネントの階層を持っています。しかし、ツリー内では、オブジェクト階層から切り離された別の要素を表示する必要があります。スピナーコンポーネントになります。何とかそれは現れたくない。ゲストコンポーネントを含む父から息子のコンポーネントツリー

<parent> 
    <child> 
     <grandchild> 
      <spinner></spinner> 
     </grandchild> 
    <child> 
</parent> 
  • parent
  • childをテンプレートにgrandchildを含む、テンプレートのchildを含みます。
  • grandchildテンプレートにはspinnerが含まれていませんが、表示する必要があります(それにはng-contentが使用されています)。あるいは、ある時点でchildは代わりにスピナーを表示したいかもしれません。

どのように動作させるのですか?親は常に子供の可能性を指定する必要がありますか?私が間違っていることを教えてください。

The example plunker

答えて

2

あなたがコンポーネントのテンプレートに<ng-content></ng-content>を追加する場合は、子要素ではなく<ng-content></ng-content>で表示されます。

この方法で、子コンポーネントを親に渡すことができます。

@Component({ 
    selector: 'child' 
    template: `<grand-child><ng-content></ng-content></grand-child>` 
}) 
@Component({ 
    selector: 'grand-child' 
    template: `some content before <ng-content></ng-content>some content after` 
}) 

次に、あなたは

<child><my-spinner></my-spinnger></child> 
+0

おかげのようにそれを使用することができますが、私はそれが仕事だろうと思ったか、これは正確である - plunkerにあなたが 'NG-content'が表示されます孫のテンプレート(私は私の記事をより正確に編集しました)または、私が見落としているニュアンスはありますか? – user776686

+0

申し訳ありませんが、Plunkerは見られませんでした。 https://plnkr.co/edit/J1qHqdjRn7NYgTyqIxLv?p=preview。 Plunkerには「」は含まれていませんでした。おそらく押して保存しない? –

+0

申し訳ありませんが、私のせいで、実際にはプランナーは救われておらず、グラハイルドを含んでいませんでした。今それは最新でなければならない – user776686

関連する問題