【问题标题】:Providing service to feature module in Angular为 Angular 中的功能模块提供服务
【发布时间】:2017-06-24 21:20:35
【问题描述】:

关于 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 并且它正在工作,为什么?我期待它不起作用。

【问题讨论】:

    标签: angular


    【解决方案1】:

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

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

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

    更具体的解释在官方NgModule FAQs

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-02-11
      • 2020-06-23
      • 2018-03-27
      • 2019-09-09
      • 1970-01-01
      • 2019-02-15
      • 2017-02-14
      • 2017-12-11
      • 1970-01-01
      相关资源
      最近更新 更多