为什么要在 angular 中设置依赖提供程序?

Why set up Dependency providers in angular?

我在 angular 中使用以下代码以 provideIn 作为 root 创建了一些服务。

@Injectable({
    providedIn: 'root'
}

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

您设置提供商的方式仅取决于您的用例。许多解决方案都是可能的。 您可以在此处找到所有详细信息 https://angular.io/guide/providers

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

单例服务

Beginning with Angular 6.0, the preferred way to create a singleton service is to set providedIn to root on the service's @Injectable() decorator. This tells Angular to provide the service in the application root. 这意味着我们应该使用 root 关键字来执行一些优化(之前,你必须在某个模块中提供每项服务。这意味着你必须注意服务实际上是在某处提供的,这也意味着未使用的服务仍会打包到您的包中(摇树))并且被 Angular 设计模式推荐。请记住,此方法会创建该服务的单个实例。