angular6 - service @Injectable provideIn

时间:2018-05-14 15:23:18

标签: angular

我对于提供的内容非常困惑。 我有一个包含test test.module.ts test.component.ts的文件夹test.service.ts 问题是我应该使用: 1)在服务中:

@Injectable({ providedIn: TestModule, })

2)或在模块中:

providers: [TestService]

为什么第一个解决方案或第二个? 提前谢谢。

3 个答案:

答案 0 :(得分:0)

表示angular6 你应该使用1(providedIn根)为所有应用程序提供可注入的单例服务,或者只在加载X时使用provideIn X生成该服务的实例。

2可以用另一个新实现覆盖注入(测试?)

Angular 6引入了provideIn,因为通常所有服务都是作为root bundle的提供者进行全局设计,并且在启动时实例化,尽管它们没有被任何模块使用。

答案 1 :(得分:0)

官方Angular文档在何处配置提供程序

https://angular.io/guide/hierarchical-dependency-injection#where-to-register

  

您可以将providerIn设置为一个   特定的NgModule。

     

...

     

这通常与配置   NgModule本身,但是如果服务是可摇树的,   NgModule不使用它。对于提供以下内容的图书馆可能很有用:   一些组件可能想要注入的特定服务   (可选)并将其留给应用程序是否提供服务。

答案 2 :(得分:-1)

区别在于...... 1)对于每个模块实例,您将拥有一个服务实例。 2)每个组件都有相同的实例。