我已经创建了两个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
参数键入。您已经明确定义了OtherLib
将config: 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将其提供给了模块实例。