繁体   English   中英

与在应用程序组件中使用服务作为提供者相比,providedIn: 'Root' 之间有什么区别?

[英]What is the difference between providedIn: 'Root' than using a service as a provider at the app component?

如果我将服务设置为应用程序模块(根模块)或装饰器 @Injectable 使用提供的提供者:'root',我假设我将在两种情况下实现相同的行为。 这意味着我的所有应用程序都将“看到”根模块提供的同一个单例类。

但是,如果我不在服务的 @Injectable 装饰器上设置任何模块,并在应用程序组件模块中使用该类作为提供者,我将无法在不是由我的模板“创建”的组件中看到相同的服务. 例如,我不能在 MatDialog 中使用该服务,该服务是使用 TS 而不是我的模板创建和打开的。

话虽如此,这些方法之间的技术区别是什么?

他们引入了providedIn: 'root'来更容易地管理服务。 大多数服务是无状态的单例服务。 providedIn: 'root'本质上与在 providers 数组中的 app.module 级别添加服务基本相同。 但是,很容易忘记添加此条目和不必要的额外步骤。

显然,如果您不想要单例服务,而是希望在各个级别提供有状态的服务,那么提供者数组仍然可用。 在 app.module 级别废弃它会令人困惑,因为providedIn: root涵盖了这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM