APP_INITIALIZE之后初始化模块

时间:2018-08-16 13:37:26

标签: angular

在我的Angular 6应用中,我正在通过Http服务加载这样的外部配置:

export function getSettings(appLoadService: ConfigLoadService) {
  return () => appLoadService.getSettings();
}

@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [],
  providers: [
    ConfigLoadService,
    {provide: APP_INITIALIZER, useFactory: getSettings, deps: [ConfigLoadService], multi: true}]
})
export class AppLoadModule {
}

服务:

@Injectable()
export class ConfigLoadService {

  constructor(private http: HttpClient) {
  }

  getSettings(): Subscription {
    console.log("Loading config from server...");
    return this.http
      .get("/config.json")
      .subscribe((config: any) => {

        AppSettings.API_BASE_URL = config.API_BASE_URL;

        console.log("API_BASE_URL: " + AppSettings.API_BASE_URL);
      });
  }
}

现在,我想添加一个外部依赖关系,需要使用当前配置对其进行初始化:

@NgModule({
  imports:
    DepModule.forRoot({
      apiBaseUrl: AppSettings.API_BASE_URL
    }),
  ],[...]

这里的问题是依赖项是在APP_INITIALIZER之前导入和初始化的,因此没有正确配置。我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

val data = pubsubStream.map(message => new String(message.getData(), StandardCharsets.UTF_8)) data.foreachRDD{ rdd => import sparkSession.implicits._ val df = rdd.toDF() df.repartition(1).write.mode("append").save(output) } ssc.start() ssc.awaitTermination() 提供者工厂方法必须返回一个诺言

因此,您将执行以下操作:

APP_INITIALIZER

Juri做了一个关于它的博客,您可以阅读更多App Runtime Config