1

公式ドキュメントlightweight injection tokenから、ツリー シェーキングを有効にするパターンの例を次に示します。

abstract class LibHeaderToken {}

@Component({
  selector: 'lib-header',
  providers: [
    {provide: LibHeaderToken, useExisting: LibHeaderComponent}
  ]
  ...,
})
class LibHeaderComponent extends LibHeaderToken {}

@Component({
  selector: 'lib-card',
  ...,
})
class LibCardComponent {
  @ContentChild(LibHeaderToken) header: LibHeaderToken|null = null;
}

私の質問は、Angular が@ContentChild(LibHeaderToken)を参照すると、トークン名が であるプロバイダーを検索しようとしますLibHeaderTokenが、現在のコンポーネントまたはその親でそれを検索します (階層インジェクターであるため)。それは調べませんLibHeaderComponent(必要なプロバイダーを宣言した場所です)。

では、なぜこれが機能しLibHeaderComponent、プロバイダーを探すときになぜ も検索されるのでしょうか?

4

1 に答える 1