对于我们的应用程序,我们需要从外部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
答案 0 :(得分:0)
似乎当我将observable转换为它正确等待的承诺时。
return configObservable.toPromise();