angular - Angular 服务装饰器提供在延迟加载的根效果
问题描述
我想知道新的角度服务装饰器如何
@Injectable({
providedIn: 'root'
})
与延迟加载结合使用。这意味着如果我有一个延迟加载的模块,并在根目录中提供了服务,这是否会在应用程序基本代码中包含特定服务,也就是。应用程序根 chunks.js 或者这仍然会延迟加载服务,然后在我延迟加载该模块时使其成为全局单例。
提供的信息
解决方案
是的,在这种情况下,它只是您延迟加载的模块/块的一部分。使用providedIn: 'root'
Angular 编译器时会自动找出完美的方法:
- 该服务将在应用程序范围内作为单例提供,无需将其添加到模块的提供程序数组(如 Angular <= 5)。
- 如果该服务仅在延迟加载的模块中使用,它将与该模块一起延迟加载
- 如果它从未使用过,它将不会包含在构建中(摇树)。
有关更多信息,请考虑阅读文档和NgModule 常见问题解答
顺便提一句:
- 如果您不想要应用程序范围的单例,请改用提供者的组件数组。
- 如果您想限制范围以使其他开发人员不会在特定模块之外使用您的服务,请改用提供者的 NgModule 数组。
推荐阅读
- web-scraping - 抓取的源代码不完整 - 加载错误
- inheritance - 如果类被继承,则使用自定义设置器
- python - 我们可以手动更改训练模型的内核值吗?
- ruby - Oracle、并发和全局临时表
- java - 如何解决 GETJson 重复异常?
- git - why is git finding directories that don't exist in my home directory?
- vue.js - npm-run-generate 上带有 nuxt 的错误消息
- c# - Nginx 配置:失败:WebSocket 握手期间出错:意外响应代码:400
- javascript - Nuxt.js 服务器端插件函数不是函数
- r - 使用日期时间轴固定 ggplot 图例位置?