我正在学习 Angular 中的 Injectables 和 Services,但我不清楚有关注射器的某些导入和默认特性。具体来说,什么时候应该在 Angular 中提供服务:
有@Injectables 标签吗?我看过一篇没有使用它的博文。当您将其忽略时会发生什么?忽略此标记将如何改变服务的行为方式?
在 app.module 的 providers 数组中声明?
在单个组件的 providers 数组中声明,而不是在 app.module 中声明?
使用 @Injectables 标签时,providedIn 关键字的默认值是多少?如果您的服务中未定义此关键字,那么应该假设关键字的值和服务的范围是什么?
假设我有一个具有这些特征的服务(我们称之为
DummyService
):具有@Injectables 标记,未定义提供的输入,未在任何提供程序数组中声明(既不是 app.module 也不是任何单个组件)。- 5.a) 由于providedIn 未指定且服务未在任何providers 数组中声明,该服务是否可以与兄弟组件共享?
- 5.b) 从导入 DummyService 的组件调用 DummyService 时,与这些用例有什么区别:
DummyService.addToList("Stacy");
对比
constructor(private _dummyservice: DummyService){}
ngOnInit(){
this.dummyservice.addToList("Stacy");
}