不能使用HttpRequest 作为http客户端请求中的选项

问题描述 投票:0回答:1

我尝试将我的角度项目从HttpModule迁移到HttpClientModule,但是我对头请求有问题,所以我多次想到我明白这里发生了什么。所以我现在要做的就是一次一点地移动到HttpClient,这意味着我没有使用HttpInterceptor,我尝试使用HttpModule中的想法,我们可以在http请求中使用RequestOptions(this.http.get(url, requestOptions))。根据我读到的关于HttpInterceptor的内容,我想我可以在http客户端请求中使用HttpRequest作为我的选项。这就是我构建方法的方法。

get(url:string, options: HttpRequest<any>): Observable<HttpRequest<any>> {
 return this.httpClient.get(url, this.getHeader(options));
}

getHeader(options: HttpRequests<any>): HttpRequests<any> {
 let headers = new HttpHeaders();
 if(options && options.headers && option.headers instanceOf HttpHeaders) {
  headers = options.headers;
 }
 headers.append('authorization': 'abc');
 let params: new HttpParams().set('id', this.id);
 let headerOptions = {
  params: params,
  headers: headers,
  withCredential: true,
 }
 Object.keys(options).forEach(key => {
  if ( !(key===params && key===headers && key===withCredential) ) {
   headersOption[key] = options[key];
  }
 });
 return headersOption as HttpRequest;
}

在visual studio代码中,它抱怨标题类型与传递参数不同。那么我可以通过其他方式将这些参数放入我的标头请求中吗?

angular http-headers migration httprequest httpclient
1个回答
1
投票

HttpClient#get函数不允许HttpRequest作为其中一个参数。

虽然这些选项确实与HttpRequest共享大部分相同的属性,但它们不能互换使用。

如果你删除你添加HttpParams类型的位置,代码应该编译没有问题。

© www.soinside.com 2019 - 2024. All rights reserved.