我应该把全应用级提供商添加到根模块 AppModule 还是根组件 AppComponent 中?
在根模块 (AppModule) 中注册全应用级提供商,而不是 AppComponent
中。
惰性加载的模块及其组件可以注入 AppModule
中的服务,却不能注入 AppComponent
中注册的服务。
只有当该服务必须对 AppComponent
组件树之外的组件不可见时,才应该把服务注册进 AppComponent
的 providers
中。但这是一个不常见的用法,正常情况下,我们是优先把服务提供商注册进模块中,而不是组件中。
Angular 把所有启动期模块的提供商都注册进了应用的根注入器中。这些服务是由根注入器中的提供商创建的,并且在整个应用中都可用。它们具有应用级作用域。
某些服务 (比如 Router) 只有当注册进应用的根注入器时才能正常工作。
相反,Angular 使用 AppComponent
自己的注入器注册了 AppComponent
的提供商。 AppComponent
服务只在该组件及其子组件树中才能使用。 它们具有组件级作用域。
AppComponent
的注入器是根注入器的子级,注入器层次中的下一级。 这对于没有路由器的应用来说几乎是整个应用了。 但这个 "几乎" 对于带路有的应用仍然是不够的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 为什么在惰性加载模块中声明的服务提供商只对该模块自身可见?
下一篇: Beego 入门学习
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论