Angular:在模块静态功能之间传递配置

时间:2018-11-13 22:54:04

标签: angular

通过互联网搜索,但找不到解决方案。在下面的代码中不言自明。基本上,在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 {}

0 个答案:

没有答案