在Angular项目之间共享服务的最佳做法

时间:2019-03-14 15:55:04

标签: angular

我知道创建一个库是在项目之间共享通用代码的推荐方法,但是有人说您应该只在其中存储无状态和独立的服务。

我正在从事的两个项目是同一网站的两个方面。
一种是面向客户的,另一种是面向我们的,以获取所有统计信息,管理工具等。

很多部分是不同的,但是有些使用相同的实体。
例如,如果我需要获取商店列表,我将有一些代码来构建请求并将其发送到后端。但是两个项目的代码都相同。

由于代码取决于当前的环境文件(由于API网址不同),因此将其放入库中显然对我没有任何意义。

我还有其他选择吗?或者可以重复一点点吗?

1 个答案:

答案 0 :(得分:1)

在库中(假设为“ my-lib”),您必须实现将提供服务的模块:

@NgModule({})
export class SomeServiceModule {
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: SomeServiceModule,
      providers: [
        { provide: SomeService, useClass: SomeService }
      ]
    };
  }
}

您的应用将像这样使用它:

import { SomeServiceModule } from 'my-lib';

@NgModule({
  imports:      [ BrowserModule, FormsModule, SomeServiceModule.forRoot() ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

有关更多信息,请参见docsstackblitz source code