下面是两个不同的get调用,但我只想创建一个。
getDashBoardDetails(userId): Observable<DashboardTo> {
let keys = this.crmBaseUrl + apiCall.gnGetDashBoardDetails + "?createdBy=" + userId;;
//let keys = apiCall.organisationMaster2;
return this.http
.get(keys)
.map((res: Response) => res)
.catch((error: any) => Observable.throw(error || "Server error"));
}
getDealerDashBoardDetails(): Observable<DealerDashboardTo> {
let keys = this.crmBaseUrl + apiCall.gnGetDealerDashBoardDetails
return this.http
.get(keys)
.map((res: Response) => res)
.catch((error: any) => Observable.throw(error || "Server error"));
}
答案 0 :(得分:1)
为什么不这样简单:
getDashBoardDetails(userId): Observable < DashboardTo > {
let keys = this.crmBaseUrl + apiCall.gnGetDashBoardDetails + "?createdBy=" + userId;
this.makeCall(keys).subscribe(res => ... )
}
getDealerDashBoardDetails(): Observable < DealerDashboardTo > {
let keys = this.crmBaseUrl + apiCall.gnGetDealerDashBoardDetails;
this.makeCall(keys).subscribe(res => ... )
}
makeCall(keys){
return this.http
.get(keys)
.map((res: Response) => res.json() ) // should be res.json(), not res
.catch((error: any) => Observable.throw(error || "Server error"))
}
答案 1 :(得分:0)
好吧,您可以创建一个名为IDashboard
的接口,并在DealerDashboardTo
和DashboardTo
中实现该接口
然后只需按以下方式创建此方法:
getDetails(userId?): Observable<IDashboard> {
let urlEnd = userId ? `${apiCall.gnGetDashBoardDetails}?createdBy=${userId}` : apiCall.gnGetDealerDashBoardDetails;
let keys = this.crmBaseUrl + urlEnd;
return this.http
.get<IDashboard>(keys)
.map((res: Response) => res)
.catch((error: any) => Observable.throw(error || "Server error"));
}
我确定这不是一个完整的答案。但这是我所能提供的最好的信息。
此外,不确定为什么要在.map
上进行.get
答案 2 :(得分:0)
我不确定您的确切目标是什么,但是我认为以下两种方法都可以帮助您
let keys1 = this.crmBaseUrl + apiCall.gnGetDashBoardDetails + "?createdBy=" + userId;;
let keys2 = this.crmBaseUrl + apiCall.gnGetDealerDashBoardDetails
forkJoin([keys1, keys2]).subscribe(results => {
var keys1Result = results[0];
var keys2Result = results[1];
});
或通过接受参数Url创建可重用的方法
getDashboardDetails(url:string){
return this.http
.get(url)
.map((res: Response) => res)
.catch((error: any) => Observable.throw(error || "Server error"));
}