У меня есть три компонента, где componentC
отображается как содержимое componentB
и получает componentB
DI'ed в своем конструкторе.DI и вступление
@Component({
selector: 'componentA',
template: `
<componentB>
<componentC></componentB>
<ng-content></ng-content>
</componentB>`
....
export class ComponentC {
constructor(private cmpB: ComponentB)
Теперь я использую componentA
из другого компонента и хочу использовать перенаправление на поставку дополнительных componentC
сек к нему через <ng-content>
что я кладу в шаблоне componentA
«s:
<componentA>
<componentC></componentC>
</componentA>
Это вызывает No provider for ComponentB
. Используя <ng-content>
, я определил, что содержимое должно появиться внутри <componentB>
, поэтому DI должен иметь возможность найти объект ComponentB
, являющийся родителем точки вставки.
Возможно ли это? Угловая создает мой дополнительный ComponentC
непосредственно в целевом местоположении или сначала там, где разметка перемещает его? Есть ли способ настроить поставщиков для этого?
Хороший вопрос о трансклюзии, не меняя иерархию компонентов, а просто перемещая материал DOM. Будет ли другое решение с использованием шаблона и фабрики компонентов для создания содержимого в виде дочернего элемента 'componentB'? – achimha