Angular 的 DI 是分层的:注入器形成一个树状结构,该结构与组件/模块树相互对应。当组件请求依赖时,Angular 会沿着向上的注入器树进行查找,直到找到提供者为止——这决定了你获得共享单例还是针对每个组件的单独实例。
注入器层级
text
Root injector (app-wide) ← providedIn: 'root' lives here (one singleton)
└─ Module/Route injectors
└─ Component injector ← providers: [...] in @Component
└─ Child component injector
查找从请求的组件开始,逐级向上冒泡至根节点。第一个找到的提供者将被使用。
