为什么 SharedModule 为惰性加载模块提供服务是个馊主意?
假设把 UserService
列在了模块的 providers
中。 假设每个模块都导入了这个 SharedModule
模块。导入 SharedModule
的每个模块都会设置 UserService
提供商。Angular 把它们中的一个注册到根注入器中。当应用中的某些组件要求注入 UserService
,Angular 就会在应用的根注入器中查找它,并交付一个全应用级的 UserService
单例对象。
现在,该考虑惰性加载模块了。当路由器惰性加载模块时,它会创建一个子注入器,并且把 UserService
的提供商注册到那个子注入器中。子注入器和根注入器是不同的。
当 Angular 创建一个惰性加载的组件时,它必须注入 UserService
服务。这时,它会从惰性加载模块的子注入器查找 UserService
的提供商,并用它创建一个 UserService
的新实例。这个 UserService
实例与 Angular 在主动加载的组件中注入的那个全应用级单例对象截然不同。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: 为什么惰性加载模块会创建一个子注入器?
下一篇: 单核 CPU 与多核 CPU 工作原理
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论