Angulars DI er hierarkisk: injektorer danner et træ, der afspejler komponent-/modultræet. Når en komponent anmoder om en afhængighed, går Angular op gennem injektortraet, indtil den finder en provider — som bestemmer, om du får en delt singleton eller en separat instans pr. komponent.
Injektorkierarkiet
Root injector (app-wide) ← providedIn: 'root' lives here (one singleton)
└─ Module/Route injectors
└─ Component injector ← providers: [...] in @Component
└─ Child component injector
Et opslag starter ved den anmodende komponent og bobler op til roden. Den fundne provider vinder.
