加载外部配置,并将此配置用于另一个http呼叫

时间:2017-08-14 18:13:36

标签: angular

对于我们的应用程序,我们需要从外部URL读取我们的配置,比如http://myhost/config.json。此配置文件包含一个apiUrl,我们应该使用所有其他http请求(Rest)。

我尝试将APP_INITIALIZER与工厂方法一起使用,该方法调用我们的服务来加载配置。这将返回一个Observable。

当我们打开页面时,会执行get请求以获取所有客户。这是通过http请求完成的,该请求应该使用配置中的apiUrl。

但是,系统不会等到第一次调用(获取配置)准备就绪,因此apiUrl尚未可用。

一个选项是将每个调用包装成(伪):

this.configService.getConfig().subscribe(config => {
   this.customerService.getCustomers(config);
})

这不是首选,因为其他开发人员应该直接调用customerService,而不应该为配置烦恼。

当我们可以在构造函数中注入Config对象并直接使用它时应该很好。这可能吗?

如果没有,我如何确保配置可用于所有其他API调用(在启动时加载)?类似于同步的http.get请求。

Angular version 4.3.4

1 个答案:

答案 0 :(得分:0)

似乎当我将observable转换为它正确等待的承诺时。

return configObservable.toPromise();