Το DI του Angular είναι ιεραρχικό: οι injectors σχηματίζουν ένα δέντρο που αντικατοπτρίζει το δέντρο συστατικών/ενοτήτων. Όταν ένα συστατικό ζητάει μια εξάρτηση, το Angular περπατά προς τα πάνω στο δέντρο των injectors μέχρι να βρει έναν πάροχο — ο οποίος ελέγχει εάν λαμβάνετε μια κοινόχρηστη singleton ή μια отдельная instance ανά συστατικό.
Η ιεραρχία του injector
Root injector (app-wide) ← providedIn: 'root' lives here (one singleton)
└─ Module/Route injectors
└─ Component injector ← providers: [...] in @Component
└─ Child component injector
