首页 > 解决方案 > 为什么要在 Angular 中设置依赖项提供程序?

问题描述

我使用以下代码以 provideIn 作为根创建了一些有角度的服务。

@Injectable({
    providedIn: 'root'
}

这使得该服务可用于整个应用程序,我可以在任何我喜欢的地方导入它。这似乎很容易做到并且非常直观。但是我正在阅读 Angular 文档并遇到了Angular Dependency providers。我理解它背后的概念是仅将服务公开给那些需要它的组件。但是我不明白这个有什么用?我们可以在根级别提供服务并在需要时访问。配置依赖提供程序是否有任何优化好处,或者仅仅是因为安全原因或任何其他原因?

标签: angularoptimizationdesign-patternsdependency-injectionangular-dependency-injection

解决方案


所以在向社区询问并在网上搜索后,我得出了这个结论。

单例服务

从 Angular 6.0 开始,创建单例服务的首选方法是在服务的 @Injectable() 装饰器上将 providedIn 设置为 root。这告诉 Angular 在应用程序根目录中提供服务。这意味着我们应该使用 root 关键字来执行一些优化(之前,您必须在某个模块中提供每个服务。这意味着您必须注意服务实际上是在某个地方提供的,这也意味着未使用的服务仍然会打包到你的包中(摇树))并且是 Angular 设计模式推荐的。请记住,此方法会创建该服务的单个实例。


推荐阅读