Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 从根目录配置共享模块中的模块_Angular_Typescript - Fatal编程技术网

Angular 从根目录配置共享模块中的模块

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,

我有一个共享模块,用于导入和配置另一个模块

我想做的是对根模块隐藏共享模块的依赖关系,但允许根模块通过配置共享模块来配置它。例如:

SharedModule.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 { }
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) {