angular - 为什么要在 Angular 中设置依赖项提供程序?
问题描述
我使用以下代码以 provideIn 作为根创建了一些有角度的服务。
@Injectable({
providedIn: 'root'
}
这使得该服务可用于整个应用程序,我可以在任何我喜欢的地方导入它。这似乎很容易做到并且非常直观。但是我正在阅读 Angular 文档并遇到了Angular Dependency providers。我理解它背后的概念是仅将服务公开给那些需要它的组件。但是我不明白这个有什么用?我们可以在根级别提供服务并在需要时访问。配置依赖提供程序是否有任何优化好处,或者仅仅是因为安全原因或任何其他原因?
解决方案
所以在向社区询问并在网上搜索后,我得出了这个结论。
单例服务
从 Angular 6.0 开始,创建单例服务的首选方法是在服务的 @Injectable() 装饰器上将 providedIn 设置为 root。这告诉 Angular 在应用程序根目录中提供服务。这意味着我们应该使用 root 关键字来执行一些优化(之前,您必须在某个模块中提供每个服务。这意味着您必须注意服务实际上是在某个地方提供的,这也意味着未使用的服务仍然会打包到你的包中(摇树))并且是 Angular 设计模式推荐的。请记住,此方法会创建该服务的单个实例。
推荐阅读
- php - 比较多个字符串并在php中找到相似的子字符串
- json - 如何使用 jq 写入 JSON 文件而不更改 Powershell 的二进制文件?
- javascript - 计算对象数组中的项目
- android - 如何使用 KOTLIN 按钮清除edittext中的输入
- reactjs - 在反应应用程序中为不同的环境配置rest url
- excel - 根据组合框1选择过滤组合框2值并在列表框中显示双重过滤结果 - VBA
- reactjs - 递归在 React 中的工作很奇怪
- hive - Hiveql - 如何计算每个 ID 的百分位数
- teradata - 使用过程的 SQL 迭代游标
- luxon - 使用 Luxon 以分钟为单位除以小时间隔