我应该把全应用级提供商添加到根模块 AppModule 还是根组件 AppComponent 中?

发布于 2024-12-06 12:45:27 字数 706 浏览 10 评论 0

在根模块 (AppModule) 中注册全应用级提供商,而不是 AppComponent 中。

惰性加载的模块及其组件可以注入 AppModule 中的服务,却不能注入 AppComponent 中注册的服务。

只有当该服务必须对 AppComponent 组件树之外的组件不可见时,才应该把服务注册进 AppComponentproviders 中。但这是一个不常见的用法,正常情况下,我们是优先把服务提供商注册进模块中,而不是组件中。

Angular 把所有启动期模块的提供商都注册进了应用的根注入器中。这些服务是由根注入器中的提供商创建的,并且在整个应用中都可用。它们具有应用级作用域。

某些服务 (比如 Router) 只有当注册进应用的根注入器时才能正常工作。

相反,Angular 使用 AppComponent 自己的注入器注册了 AppComponent 的提供商。 AppComponent 服务只在该组件及其子组件树中才能使用。 它们具有组件级作用域。

AppComponent 的注入器是根注入器的子级,注入器层次中的下一级。 这对于没有路由器的应用来说几乎是整个应用了。 但这个 "几乎" 对于带路有的应用仍然是不够的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

想挽留

暂无简介

0 文章
0 评论
20372 人气
更多

推荐作者

马化腾

文章 0 评论 0

thousandcents

文章 0 评论 0

辰『辰』

文章 0 评论 0

ailin001

文章 0 评论 0

冷情妓

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文