Есть ли способ получить экземпляр компонента с помощью внедрения зависимостей, когда компонент отображается с помощью проекции содержимого? - PullRequest
0 голосов
/ 27 апреля 2020

Angular внедрение зависимостей navtree

В Angular есть ли способ получить экземпляр компонента (InsideParentComponent упомянуто в примере ниже), используя внедрение зависимостей?

Обзор приложения :

Содержит три компонента -

  • ParentComponent: хост-компонент содержит ng-content, обернутый сторонним компонентом InsideParentComponent.

  • InsideParentComponent: Считайте, что это сторонний компонент, определение которого нельзя изменить. Этот компонент также содержит ng-content.

  • ChildComponent: он был передан между ParentComponent как проецируемое содержимое и перераспределил проецируемое содержимое в InsideParentContent.

Постановка задачи

Чтобы получить экземпляр InsideParentContent в ChildComponent только путем внедрения зависимостей

StackBlitz

AppComponent (HTML)

<app-parent>
    <app-child></app-child>
</app-parent>

ParentComponent (HTML)

<app-inside-parent>
    <ng-content></ng-content>
</app-inside-parent>

InsideParentComonent (HTML) (из сторонней библиотеки)

<ng-content></ng-content>

ChildComponent (TS)

export class ChildComponent {
  public config: String;
  name = "Child Component";
  constructor(
    @Optional() @SkipSelf() private _app: AppComponent,
    @Optional() @SkipSelf() private _parent: ParentComponent,
    @Optional() @SkipSelf() private _insideParent: InsideParentComponent,
  ) {
    console.log("App Ref: ", this._app);
    console.log("Parent Ref: ", this._parent);
    console.log("InsideParent Ref: ", this._insideParent); // Prints null
  }
}

Ссылки

...