Angular 从根目录配置共享模块中的模块
我有一个共享模块,用于导入和配置另一个模块 我想做的是对根模块隐藏共享模块的依赖关系,但允许根模块通过配置共享模块来配置它。例如: SharedModule.ts:Angular 从根目录配置共享模块中的模块,angular,typescript,Angular,Typescript,我有一个共享模块,用于导入和配置另一个模块 我想做的是对根模块隐藏共享模块的依赖关系,但允许根模块通过配置共享模块来配置它。例如: SharedModule.ts: @NgModule({ imports: [ //want to configure this from root module without importing into root module ConfigModule.forRoot({ provide: ConfigLoader,
@NgModule({
imports: [
//want to configure this from root module without importing into root module
ConfigModule.forRoot({
provide: ConfigLoader,
useFactory: (configFactory),
deps: [HttpClient]
})
],
declarations: [MyComponent],
exports: [MyComponent],
providers: [HttpClient]
})
export class SharedModule{ }
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpClientModule,
AppRoutingModule,
SharedModule, //Want to configure ConfigModule from here
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
AppModule.ts:
@NgModule({
imports: [
//want to configure this from root module without importing into root module
ConfigModule.forRoot({
provide: ConfigLoader,
useFactory: (configFactory),
deps: [HttpClient]
})
],
declarations: [MyComponent],
exports: [MyComponent],
providers: [HttpClient]
})
export class SharedModule{ }
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpClientModule,
AppRoutingModule,
SharedModule, //Want to configure ConfigModule from here
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
通过实现ModuleWithProviders(static forRoot),这似乎是不可能的,因为它不公开导入。有什么想法吗?这是在配置CustomConfig,而不是ConfigModule。
export class SampleModule {
static forRoot(config: CustomConfig): ModuleWithProviders {
// User config get logged here
console.log(config);
return {
ngModule: SampleModule,
providers: [SampleService, {provide: 'config', useValue: config}]
};
}
}
@Injectable()
export class SampleService {
foo: any;
constructor(@Inject('config') private config:any) {