我在angular中用provideIn作为根创建了几个服务,代码如下:
@Injectable({
providedIn: 'root'
}
这使得服务对整个应用程序可用,我可以在任何地方导入它。这似乎很容易做到,而且非常直观。但是我在阅读angular文档时遇到了angular依赖提供程序。我理解其背后的概念是将服务仅公开给需要它的组件。但我不明白这有什么用?我们可以在根级别提供服务,并在任何需要的地方访问。配置依赖提供程序是否有任何优化好处,或者仅仅是因为安全原因或其他原因?
设置提供者的方式仅取决于您的用例。许多解决方案都是可能的。你可以在这里找到所有的细节https://angular.io/guide/providers
所以在询问社区和网上搜索之后,我得出了这个结论。
单服务从Angular 6.0开始,创建单例服务的首选方式是在该服务的@Injectable()装饰器上将providedIn设置为root。这告诉Angular在应用的根目录中提供服务。这意味着我们应该使用root关键字来执行一些优化(以前,您必须在某个模块中提供每个服务)。这意味着你必须注意服务实际上是在某个地方提供的,这也意味着未使用的服务仍然会被打包到你的bundle中(摇树),这是Angular设计模式所推荐的。记住,这个方法创建了该服务的一个实例。