Angulars DI är hierarkisk: injektorer bildar ett träd som speglar komponenten/modulträdet. När en komponent begär ett beroende, går Angular upp i injektorträdet tills den hittar en leverantör — som styr om du får en delad singleton-instans eller en separat instans per komponent.
Injektorhierarkin
Root injector (app-wide) ← providedIn: 'root' lives here (one singleton)
└─ Module/Route injectors
└─ Component injector ← providers: [...] in @Component
└─ Child component injector
En sökning börjar vid den begärande komponenten och bubblar upp till roten. Den funna leverantören vinner.
