在根 AppModule 或根 AppComponent 中注册服务

Register service in root AppModule or root AppComponent

在任何地方,建议在根 AppModule providers 数组中注册服务,避免使用根 AppComponent 的 providers 数组。 什么时候应该在根 AppComponent 中注册服务?任何实际例子。 与根AppComponent相比,在根AppModule中注册服务有什么优势?

在根目录注册时,所提供的服务被创建为单例,与在组件中提供相反,它会在您使用组件时创建尽可能多的实例。

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

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

阅读更多here

您不能将服务注册到组件中。每个服务都需要注册到一个模块中。

@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。

希望对这个答案有所帮助。

您可以在 app.module 或 app.component 中注册服务。不同之处在于,当您在 app.module 中注册服务时,它可以 作为任何组件和服务的依赖项注入 但在 app.component 中注册它可以 仅作为组件的依赖注入