我对于提供的内容非常困惑。
我有一个包含test
test.module.ts
test.component.ts
的文件夹test.service.ts
问题是我应该使用:
1)在服务中:
@Injectable({
providedIn: TestModule,
})
2)或在模块中:
providers: [TestService]
为什么第一个解决方案或第二个? 提前谢谢。
答案 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)每个组件都有相同的实例。