Angular - поставщики контента

Можно ли «передавать поставщиков» от компонентов представления к компонентам содержимого?

Я сталкиваюсь с этой проблемой снова и снова и не могу найти ни решения, ни информации (документов), что невозможно по замыслу.

Если у меня есть компонент в шаблоне, его можно вставить в конструктор дочернего компонента (это, конечно, работает):

      @Component({
  selector: 'aaa',
  template: '<div>This is AAA {{prop}}><div><ng-content></ng-content></div>'
})
export class AComponent {
  prop = Math.random();
}

@Component({
  selector: 'bbb',
  template: '<div>This is BBB. Parent is AAA {{a.prop}}</div>'
})
export class BComponent {
  constructor(public a: AComponent) { }
}

<aaa><bbb></bbb></aaa>

Результат:

      This is AAA 0.4997284193879621>
This is BBB. Parent is AAA 0.4997284193879621

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

Этот сценарий не работает:

      @Component({
  selector: 'ccc',
  template: '<aaa><ng-content></ng-content></aaa>'
})
export class CComponent {
}

<ccc><bbb></bbb></ccc>

Заканчивается NullInjectorError: R3InjectorError(AppModule)[AComponent -> AComponent -> AComponent]: NullInjectorError: No provider for AComponent!

Есть ли способ написать такого поставщика (или viewProvider) в CComponent, который бы предоставлял инъекционные объекты из своего шаблона / представления?

0 ответов

Другие вопросы по тегам