如何共享服务 - NgModule - Angular2.



我知道在 Angular2 中,模块提供的服务可供其他模块使用,并且应该只提供一次。

我有一个延迟加载的MessengerModule,它导入了一个MessengerService。我还有一个标题模块,它只需要此服务来更新消息通知。

我看到两种方式:

  1. 在应用模块级别提供信使服务
  2. 在 MessengerModule 中提供信使服务。在标头模块中导入信使模块。

在 1 中,通过删除其逻辑服务来"破坏"信使模块很烦人。 在 2 中,我将失去 MessengerModule 的延迟加载功能,该功能非常大。由于 HeaderModule 急于加载,Messenger 也会一样吗?

似乎最好的选择是在主要级别提供服务。您的建议是什么?

你应该阅读这篇文章。

它涉及: app/shared/shared.module.ts

import { NgModule, ModuleWithProviders } from '@angular/core';
import { CounterService } from './counter.service';
@NgModule({})
export class SharedModule {
static forRoot(): ModuleWithProvider`enter code here`s {
return {
ngModule: SharedModule,
providers: [CounterService]
};
}
}

app/app.module.ts

import { SharedModule } from './shared/shared.module';
@NgModule({
imports: [
SharedModule.forRoot(),
...
],
...
})
export class AppModule {}

由于共享模块仅包含Angular寄存器的服务 在根应用注入器中,我们不需要在 LazyModule 中导入它。 这是因为延迟加载的模块已经可以访问 在根级别定义的服务。

相关内容

  • 没有找到相关文章

最新更新