为Angular

时间:2017-06-24 11:35:50

标签: angular

关于Angular和功能模块

根据这个:

  

当我们在应用程序根模块急切加载的功能模块中提供服务时,每个人都可以注入该服务。

这是否意味着此功能的所有组件都可以使用?或其他功能模块的所有组件?

我们在功能模块中有服务,我们可以在其他功能模块中注入此服务。

我们的功能模块提供服务:

@NgModule({
  imports: [SharedModule],
  declarations: [FeatureAComponent],
  exports: [FeatureAComponent],
  providers: [FeatureAService]
})
export class FeatureAModule { }

我们的功能模块没有服务:

@NgModule({
  imports: [SharedModule],
  declarations: [FeatureBComponent],
  exports: [FeatureBComponent],
  providers: []
})
export class FeatureBModule { }

这里发生的事情是,我正在 FeatureBComponent 中注入 FeatureAService ,它正在运作,为什么?我原以为它不起作用。

1 个答案:

答案 0 :(得分:4)

好的,现在我明白了。除非我理解错了。

由于我的功能模块是在根模块中导入的,因此它使我的提供程序可用于所有其他功能模块。

https://angular.io/guide/ngmodule#!#service-providers

官方NgModule FAQs中更具体的解释:

  

在引导模块的@NgModule.providers中列出的提供商   有适用范围。添加服务提供商   @NgModule.providers有效地将服务发布给整个服务   应用

     

导入模块时,Angular会添加模块的服务提供商   (其提供者列表的内容)到应用程序根注入器。

     

这使得提供程序对应用程序中的每个类都可见   知道提供者的查找令牌。