我已经创建了两个Angular库,一个库具有另一个依赖项。
需要使用forRoot方法配置依赖项。 如何将配置数据从父库传递给它的依赖项?
例如,假设我们有TopLevelLib
,其中有OtherLib
作为依赖项。需要使用forRoot将OtherLib传递给配置对象。
最终用户的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 }]
};
}
}
OtherLib-由TopLevelLib导入
@NgModule({
imports: [...],
declarations: [...],
exports: [...]
})
export class OtherLib {
static forRoot(config: ConfigObj): ModuleWithProviders {
return {
ngModule: SampleModule,
providers: [{ provide: SomeInjectionToken, useValue: config }]
};
}
}
我需要的是将配置对象实例从TopLevelLib传递给OtherLib。这样,当最终用户使用forRoot配置TopLevelLib时,OtherLib将被配置相同的数据。
关于如何实现此目标的任何想法?
答案 0 :(得分:0)
您可以输入UI
参数。您已明确定义forRoot
具有OtherLib
作为参数-这意味着config: ConfigObj
需要使用TopLevelLib
的实例对其进行配置。因此,ConfigObj
评论的答案是:*****what goes in here?*****
的实例。
编辑:发表评论后,您似乎想传递一些配置值。您可以这样操作:
ConfigObj
然后export class TopLevelLib {
static forRoot(config: ConfigObj): ModuleWithProviders {
return {
ngModule: SampleModule,
providers: [{ provide: ConfigObj, useValue: config }]
};
}
}
可以使用Injector来获取此信息:
OtherLib
答案 1 :(得分:0)
最终,我找到了一个很好的解决方案。 我已经公开了服务使用的注入令牌(在上面的示例中,OtherLib),将其导入TopLevelLib模块,并使用forRoot配置将其提供给模块实例。