【发布时间】:2021-07-13 16:49:03
【问题描述】:
我正在使用 Angular 延迟加载模块,并希望在延迟加载模块中访问根服务,例如 AuthService。我想访问延迟加载模块中根注入器中存在的单例实例。
我正在关注https://angular.io/guide/providers,有两条语句导致了混淆:
当您将服务提供者添加到根应用程序注入器时,它在整个应用程序中都可用。
当 Angular 路由器延迟加载一个模块时,它会创建一个新的注入器。此注入器是根应用程序注入器的子代。想象一棵注射器树;每个延迟加载的模块都有一个根注入器,然后是一个子注入器。路由器将根注入器中的所有提供程序添加到子注入器。当路由器在延迟加载的上下文中创建组件时,Angular 更喜欢从这些提供程序创建的服务实例,而不是应用程序根注入器的服务实例。
第一条语句清楚地表明我可以在应用程序的任何位置访问根服务。而第二个是说延迟加载的模块将获得自己的注入器,并可能拥有自己的服务实例?
那么这有可能在延迟加载的模块中获取服务的单例实例吗?
【问题讨论】:
标签: angular dependency-injection