我想将模块配置从一个模块传播到另一个模块。我发现很难对此进行详细解释,因此我将举一个例子。
我有一个类似这样的模块:
@NgModule({
declarations: [
ButtonComponent,
TranslatePipe,
],
imports: [
CommonModule,
],
exports: [
ButtonComponent,
],
})
export class ButtonModule {
static withConfig(config: ButtonModuleConfig): ModuleWithProviders {
return {
ngModule: ButtonModule,
providers: [
{
provide: TranslateService,
useClass: config.translateService,
},
],
};
}
}
我想做的事情是另一个模块:
@NgModule({
declarations: [
PageComponent,
],
imports: [
CommonModule,
ButtonModule, // the one defined above without overriding the TranslateService
],
exports: [
PageComponent,
],
})
export class PageModule {
static withConfig(config: PageModuleConfig): ??? {
return {
ngModule: PageModule,
imports: [
ButtonModule.withConfig({
translateService: config.translateService,
],
};
}
}
是否有类似ModuleWithProviders
的东西,更像是ModuleWithImports
的东西?
谢谢!
答案 0 :(得分:3)
如果您使页面模块能够为翻译服务提供价值,那么它将起作用。
export class PageModule {
static withConfig(config: any): ModuleWithProviders {
return {
ngModule: PageModule,
providers: [
{
provide: TranslateService,
useValue: config.translateService
}
]
};
}
}
这是sample stackblitz应用程序。