【问题标题】:Best practices for sharing services between projects in Angular在 Angular 中的项目之间共享服务的最佳实践
【发布时间】:2019-03-15 05:00:53
【问题描述】:

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

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

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

由于代码依赖于当前的环境文件(因为不同的 API url),显然我把它放在库中是没有意义的。

我还有其他选择吗?或者只是可以有重复的点点滴滴?

【问题讨论】:

标签: angular


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 2016-01-19
    • 2014-05-31
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多