Angularの依存性注入は階層的です:インジェクターはコンポーネント/モジュールツリーを反映するツリーを形成します。コンポーネントが依存性をリクエストすると、Angularはプロバイダーを見つけるまでインジェクターツリーを上へ歩みます—これは共有されたシングルトンまたはコンポーネントごとの個別インスタンスのどちらかを取得するかを制御します。
インジェクターの階層
Root injector (app-wide) ← providedIn: 'root' lives here (one singleton)
└─ Module/Route injectors
└─ Component injector ← providers: [...] in @Component
└─ Child component injector
ルックアップはリクエスト元のコンポーネントから始まり、ルートまでバブルアップします。見つかったプロバイダーが勝ちます。
