使用 "forRoot" 将配置数据传递给角度库的依赖项



我已经创建了两个Angular库,一个具有依赖项。

需要使用FROOT方法配置依赖关系。如何将配置数据从父库传递给其依赖性?

例如,假设我们有TopLevelLib,它具有OtherLib作为依赖关系。需要使用forroot传递其他列表。

最终用户的AppModule,导入到

@NgModule({
  imports: [
    TopLevelLib.forRoot(someConfigData)
  ],
  declarations: [...],
  exports: [...]
})
export class AppModule { }

toplevellib-最终用户导入到appModule

@NgModule({
  imports: [
    ...
    OtherLib.forRoot(*****what goes in here?*****)
  ],
  declarations: [...],
  exports: [...]
})
export class TopLevelLib {
  static forRoot(config: ConfigObj): ModuleWithProviders {
    return {
      ngModule: SampleModule,
      providers: [{ provide: SomeInjectionToken, useValue: config }]
    };
  }
}

其他Lib-由Toplevellib导入

@NgModule({
  imports: [...],
  declarations: [...],
  exports: [...]
})
export class OtherLib {
  static forRoot(config: ConfigObj): ModuleWithProviders {
    return {
      ngModule: SampleModule,
      providers: [{ provide: SomeInjectionToken, useValue: config }]
    };
  }
}

我需要的是将配置对象实例从toplevellib传递到其他莱布。因此,当最终用户使用forroot配置toplevellib时,其他Lib将使用相同的数据配置。

关于如何实施此问题的任何想法?

您可以将forRoot参数键入。您已经明确定义了OtherLibconfig: ConfigObj作为参数 - 这意味着TopLevelLib需要使用ConfigObj实例进行配置。因此,*****what goes in here?*****评论的答案是:ConfigObj的实例。

edit :在注释后,您似乎想通过一些配置值传递。您可以这样做:

export class TopLevelLib {
  static forRoot(config: ConfigObj): ModuleWithProviders {
    return {
      ngModule: SampleModule,
      providers: [{ provide: ConfigObj, useValue: config }]
    };
  }
}

然后OtherLib可以使用喷油器来获取此功能:

class OtherLib {
  constructor(@Inject() ConfigObj) {}
...

最终,我找到了一个很好的解决方案。我已经揭示了服务使用的注入令牌(在上面的其他lib中,将其导入了Toplevellib模块,并使用Forroot Configuration将其提供给了模块实例。

最新更新