Angular 应在何处注入服务,该服务应在所有应用程序中可见?(2)

Angular 应在何处注入服务,该服务应在所有应用程序中可见?(2),angular,typescript,angular2-services,angular2-injection,Angular,Typescript,Angular2 Services,Angular2 Injection,我想创建NewService。我想从所有应用程序中调用它 我应该将其注入SharedModule(导出所有可重用模块的模块)或AppModule(我的应用程序的主模块)中 如果您直接将其添加到AppModule,或者添加到功能模块,只要该模块没有延迟加载,这并不重要 延迟加载的模块有自己的根作用域,添加的提供程序只对延迟加载的模块可见。最好的位置可能是角度引导方法。我不这么认为。这在引入NgModule之前是有效的,但现在我不建议添加到bootstrap,如果没有具体原因的话。@GünterZö

我想创建
NewService
。我想从所有应用程序中调用它

我应该将其注入SharedModule(导出所有可重用模块的模块)或AppModule(我的应用程序的主模块)中


如果您直接将其添加到
AppModule
,或者添加到功能模块,只要该模块没有延迟加载,这并不重要


延迟加载的模块有自己的根作用域,添加的提供程序只对延迟加载的模块可见。

最好的位置可能是角度引导方法。我不这么认为。这在引入
NgModule
之前是有效的,但现在我不建议添加到
bootstrap
,如果没有具体原因的话。@GünterZöchbauer说得好。:)当然如果指令、管道和服务一起构建可重用功能,则将它们打包在一起,然后将模块添加到要使用此功能的
imports:[…]
位置。这是
NgModule
的预期用途(除了延迟加载)。因此,我应该将NewService添加到SharedModule中的exports:[…],并将SharedModule导入其他模块。但我不能在其他模块中使用NewService?我还需要做什么?服务应该足以添加到
提供程序:[]
只需将指令、组件和管道以及重新导出的模块添加到
导出:[]
,然后将此模块添加到AppModule的
导入:[]
,或者您想要使用它的其他模块。
@NgModule({

  providers: [
     // Here?
  ]
})