通过互联网搜索,但找不到解决方案。在下面的代码中不言自明。基本上,在angular-cli
工作区中,我想在模块environments
函数之间将应用程序项目中定义的静态static
配置传递给库项目。
如果我能够在imports
模块功能中使用static
,那将解决问题,即如何从Module1.withConfiguration(config.someArg)
Module2.withConfiguration
。
有一些方法可以解决InjectionToken
并依靠它,但是在这种情况下,它的模板太多了。
我看到了使用Module1.withConfiguration(config.someArg).providers
中的Module2.withConfiguration()
的另一种解决方案,但对我来说似乎不是一个好的解决方案,为什么Module2
应该知道Module1
提供的内容
// ng g library ...
@NgModule({})
export class Module0 {}
// ng g library ...
@NgModule({})
export class Module1 {
static withConfiguration(someArg: string): ModuleWithProviders {
return {
ngModule: Module1,
providers: [/* use here someArg */]
};
}
}
// ng g library ...
export interface Module2Config { someArg: string; anotherArg: boolean; }
@NgModule({
imports: [
// I want pass `config.someArg` here
Module1.withConfiguration('someArgHardcodedValue'),
// I want also use `config.anotherArg` like this
...(config.anotherArg ? [Module0] : [])
]
})
export class Module2 {
static withConfiguration(config: Module2Config): ModuleWithProviders {
return {
ngModule: Module1,
providers: [/* use here config */]
};
}
}
// ng g application ...
@NgModule({
imports: [
Module2.withConfiguration({
someArg: 'appProvidedValue',
anotherArg: true
})
]
})
export class AppModule {}