在根AppModule或根AppComponent中注册服务

时间:2017-08-25 08:39:20

标签: angular angular2-directives angular2-pipe

无处不在,建议在根AppModule提供程序数组中注册服务,并避免使用根AppComponent的提供程序数组。 什么时候应该有人在根AppComponent中注册服务?任何实际的例子。 与根AppComponent相比,在根AppModule中注册服务有什么好处?

3 个答案:

答案 0 :(得分:5)

在根目录中注册时,提供的服务将创建为单例,与在组件中提供相反,将在创建与使用组件时一样多的实例。

换句话说:
在根级别注入的服务可在整个应用程序中访问 组件级别提供的服务仅适用于该组件及其子组件。

如果您将服务注入多个组件(@Component({ ...providers: [] ..}),每个组件都将获得它自己的实例,并且他们的孩子将共享同一个实例。
如果您注入根级别(@NgModule({ ... providers: []}),则所有组件将共享同一个实例。

了解更多here

答案 1 :(得分:0)

您可以在app.module或app.component中注册服务。区别在于,当您在app.module中注册服务时,可以将其作为依赖项注入到任何组件和服务中,但是在app.component中注册时,可以将其注入为依赖项,仅添加到组件

答案 2 :(得分:-2)

您无法将服务注册到组件中。每项服务都需要注册到模块中。

@NgModule({
   imports: [
       CommonModule,
       etc
   ],
   declarations: [
       AppComponent,
       Other components and stuff related to this module
   ],
   exports: [
       What you want to export if this module is imported by another
   ],
   providers: [
       YourService 
   ]

例如,我将所有服务保留在" CoreModule"我只是在AppRoot中导入CoreModule。

希望能帮到这个答案。