Angular 文档我不确定我是否理解
Angular提供者文档指出:
当 Angular 路由器延迟加载一个模块时,它会创建一个新的注入器。此注入器是根应用程序注入器的子代。想象一棵注射器树;每个延迟加载的模块都有一个根注入器,然后是一个子注入器。路由器将根注入器中的所有提供程序添加到子注入器。当路由器在延迟加载上下文中创建组件时,Angular 更喜欢从这些提供程序创建的服务实例,而不是应用程序根注入器的服务实例。
在延迟加载模块的上下文中创建的任何组件(例如通过路由器导航)都会获取服务的本地实例,而不是根应用程序注入器中的实例。外部模块中的组件继续接收为应用程序根创建的实例。
问题
这是否意味着当我在延迟加载的模块中访问任何全局声明的提供程序时,我会访问它的副本,该副本与在根注入器中创建的实例是分开的?
假设我有两种情况:
情况A
- 根模块
AppModule
- 提供
ProviderX
- 宣布
AppComponent
- 注入
ProviderX
- 注入
- 提供
- 懒加载模块
SubpageModule
- 没有提供者
- 宣布
SubpageComponent
- 注入
ProviderX
- 注入
情况乙
- 根模块
AppModule
- 提供
ProviderX
- 宣布
AppComponent
- 注入
ProviderX
- 注入
- 提供
- 懒加载模块
SubpageModule
- 提供
ProviderX
- 宣布
SubpageComponent
- 注入
ProviderX
- 注入
- 提供
在情况 A 中,in 的实例是与ProviderX
inSubpageComponent
相同的实例AppComponent
还是不同的实例?我理解在情况 B 他们不是。