Невозможно использовать HttpRequest <any>в качестве опции в запросе клиента http - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь перенести свой угловой проект из 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 Ответ

0 голосов
/ 30 августа 2018

Функция HttpClient#get не допускает использование HttpRequest в качестве одного из параметров.

Несмотря на то, что параметры имеют большинство свойств, аналогичных HttpRequest, они не могут использоваться взаимозаменяемо.

Если вы удалите место добавления типа HttpParams, код должен скомпилироваться без проблем.

...