angular - 在 Angular 中的项目之间共享服务的最佳实践

标签 angular

我知道创建一个库是在项目之间共享公共(public)代码的推荐方式,但有人说你应该只在那里存储无状态和独立的服务。

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

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

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

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

最佳答案

在库中(假设'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 { }

参见 docs更多信息和stackblitz source code

关于angular - 在 Angular 中的项目之间共享服务的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55166931/

相关文章:

javascript - 使用 webpack 的最简单的 angular2 设置

java - 迭代 Firebase 对象的 JSON 对象

Angular js 2 'node_modules/rxjs/Observable"'没有导出成员 'Observable' 。进口可观察

javascript - Angular2模板渲染错误

node.js - Angular-cli 种子项目没有 Bower、Grunt、gulp,它如何管理所有依赖项?

angular - FormArray 返回 null?

angular - 当解析在 Angular 5 中没有返回数据时停止路由更改

html - Angular 7 不呈现 Bootstrap 控制

angular - 将 ElementRef 注入(inject)可注入(inject)错误

java - 使用 Spring Boot 和 Angular 的提醒推送通知