我在角4工作,我有一个提供API应用程序的URL从settings.json文件,像一个appConfigService:角服务,并请求依赖
private appConfig: AppConfig;
constructor(private http: Http) {
this.loadConfig().subscribe(e => this.appConfig = e);
}
public loadConfig(): Observable<AppConfig> {
return this.http
.get("appsettings.json")
.map(this.mapAppConfig)
.catch(this.handleError);
}
然后我用该网址适用于我所有的以下请求。
它工作正常后,返回的网址发送的请求,但我有问题与页面加载时发送的请求(和URL尚未检索)。
我知道我可以使用flatmap功能时加载的启动服务,但我发现自己创建功能基本相同的两种实现方式:
private getBasicRequest(offset: number = 0, limit:number = 0): Observable<Response>{
if (!this.appConfigService.isAppConfigValid()) {
var urlObserver = this.appConfigService.loadConfig();
var request = urlObserver
.flatMap(responseFromConfigService =>
this.http.get(responseFromConfigService.apiBaseAddress + "/entries/" + this.searchTerm + "?offset=" + offset + "&limit=" + limit));
return request;
} else {
var url = this.appConfigService.getApiLink("entries/" + this.searchTerm + "?offset=" + offset + "&limit=" + limit);
return this.http.get(url);
}
}
什么会是一个更好的方式来处理这种情况? 我试图让appConfigService服务在'startup'开始,它可以解决我的问题,但它不起作用。
您可以使用https://stackoverflow.com/questions/37611549/how-to- pass-parameters-rendered-from-backend-to-angular2-bootstrap-method/37611614#37611614或https://stackoverflow.com/questions/36271899/what-is-the-correct-way-to-share-the-结果的角2-http-network-call-in/36291681#36291681 –