2016-10-14 2 views
2

В Angular 2 У меня есть иерархия компонентов. Однако в дереве мне нужно показать еще один элемент, который отделен от иерархии объектов. Он будет компонентом spinner. Как-то он не хочет появляться.Дерево компонентов «Отец сыну» с гостевым компонентом

<parent> 
    <child> 
     <grandchild> 
      <spinner></spinner> 
     </grandchild> 
    <child> 
</parent> 
  • parent включает в себя child в шаблоне,
  • child включает в себя grandchild в шаблоне.
  • grandchild не содержит spinner в шаблоне, но хочет его показать (для этого он использует ng-content). Или, может быть, в какой-то момент child захочет показать вместо этого счетчик.

Как заставить его работать? Всегда ли родитель должен указывать возможных детей? PLease дайте мне знать, что я делаю неправильно.

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 вы увидите 'нг-Content' в шаблон Grandchild. (Я отредактировал мой пост, чтобы быть более точным.) Или есть какие-то нюансы, которые я пропускаю? – user776686

+0

Извините, не видел Plunker. https://plnkr.co/edit/J1qHqdjRn7NYgTyqIxLv?p=preview. Ваш Plunker не содержал ''. Может быть, не нажал сохранить? –

+0

Извините, моя вина, действительно, плукер не был спасен и не содержал грачи. Теперь он должен быть актуальным – user776686

Смежные вопросы