Невозможно использовать HttpRequest<any> в качестве опции в запросе клиента http
Я пытаюсь перенести мой угловой проект из HttpModule в HttpClientModule, но у меня возникают проблемы с запросом заголовка, поэтому я много раз думал, что понимаю, что здесь происходит. Итак, что я хочу сделать в данный момент, это постепенно перемещаться к HttpClient, это означает, что я не использую HttpInterceptor, и я пытаюсь использовать идею из HttpModule, где мы можем использовать RequestOptions в запросе http (this.http.get(url, requestOptions)
). Из того, что я читал о HttpInterceptor, я подумал, что мог бы использовать HttpRequest в качестве параметров в запросе http-клиента. Вот как я строю свой метод.
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 он жалуется на то, что тип заголовка не совпадает с типом передаваемых параметров. Так есть ли другой способ сделать это, чтобы получить эти параметры в мой запрос заголовка?
1 ответ
HttpClient#get
функция не позволяет HttpRequest
в качестве одного из параметров.
В то время как параметры имеют общие свойства HttpRequest
, они не могут быть использованы взаимозаменяемо.
Если вы удалите, где вы добавили HttpParams
типа, код должен компилироваться без проблем.