angular 9映射httpClient.获取问题



在angular 4中,我们有一个通用方法,基本上可以将URI扁平化:

return Observable.forkJoin(fullUri, requestOptions)
.flatMap((results: [string, RequestOptions]) => this.http.get(results[0], results[1]))
.map(this.extractData)
.catch(this.errorMapperService.handleError);

现在在Angular 9中,RequestOptions已经被弃用,httpClient.get现在返回第二个参数上的许多对象。

所以我现在有:

return forkJoin(fullUri, requestHeaders)
.pipe(flatMap((results: [string, any ]) => this.httpClient.get(results[0], { withCredentials: true, headers: results[1] })))
.pipe(map(this.extractData))
.pipe(catchError(this.errorMapperService.handleError));

但在我的flatMap上,我正在映射回任何一个,它没有正确地变平。如果我将"any"更改为HttpHeaders,它就无法编译。有人能告诉我应该把它扁平化为什么吗?

forkJoin接受一些可迭代的可观察性并等待它们完成。如果不能观察到fullUrirequestHeaders,则forkJoin会抱怨。

要以您原来的方式发出单个http请求,只需将mapcatchError链接到可观察的http.get上。

const options = { withCredentials: true, headers: requestHeaders };
return this.httpClient.get(fullUri, options).pipe(
map(this.extractData),
catchError(catchError(this.errorMapperService.handleError))
);

最新更新