【问题标题】:How to avoid multiple service's instance in an Angular library? (with lazy loaded modules)如何避免 Angular 库中的多个服务实例? (带有延迟加载的模块)
【发布时间】:2020-07-13 16:48:44
【问题描述】:

我有一个非常大的 Angular 项目,我正在将 Core 迁移到一个库。当我的服务(在库中)被导出时,问题就出现了:

public static forRoot(): ModuleWithProviders {
    return {
      ngModule: NbopflModule,
      providers: [
        ...ALL_PIPES,
        ...ALL_SERVICES
      ]
    };
  }

并且服务(全部)具有:

@Injectable({
  providedIn: 'root'
})

我在 appModule 中加载库 (forRoot)。 我在花边加载模块中加载相同的库(有些像加载花边的库,有些在项目内部)

我在构造函数中添加了一个console.log,并在每个加载的模块中显示消息,生成多个实例。我不想重构所有的代码来制作所有的变量静态。

任何人都知道强制由库导入服务的单个实例的任何方法吗?

非常感谢

【问题讨论】:

    标签: angular angular-library


    【解决方案1】:

    我得到了解决方案:S:S

    它只是删除提供者中的所有声明(不在forRoot中,不在模块提供者中......)只是使用providin:'root',并在public-api文件中导出,工作:)

    【讨论】:

      猜你喜欢
      • 2020-10-23
      • 2017-06-21
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      相关资源
      最近更新 更多