Как передать URLSearchParams в методе HttpClient " get " - Angular 5
Я Угловое 4.2 С адресу http service и я использовали метод get, как это, где params является объектом URLSearchParams:
this.http.get(url, {headers: this.setHeaders(), search: params})
Я хочу перейти на Угловое 5. http теперь С помощью HttpClient объект, как рекомендовано командой angular. Я получил ошибку с ключом "поиск".
знаете ли вы, как перенести Http на службу HttpClient в моем случае?
спасибо.
4 ответов
С углового 4.3 вы можете использовать HttpClient
такой :
import { HttpClient,HttpHeaders, HttpParams } from '@angular/common/http';
constructor(private httpClient: HttpClient) { }
getData(){
let headers = new HttpHeaders();
headers = headers.append('header-1', 'value-1');
headers = headers.append('header-2', 'value-2');
let params = new HttpParams();
params = params.append('param-1', 'value-1');
params = params.append('param-2', 'value-2');
this.httpClient.get("/data", {headers , params })
}
HttpParams
и HttpHeaders
являются неизменяемыми классами, поэтому после каждого вызова set
или append
методы они возвращают новый экземпляр, поэтому вы должны сделать это:params = params.append(...)
Угловой 4 Способ:
this.http.get(url, {headers: this.setHeaders(), search: params})
Угловой 5 Путь:
import { HttpClient, HttpParams } from '@angular/common/http';
let params = new HttpParams().set('paramName', paramValue);
this.http.get(url, { params: params })
Несколько Параметров:
// Initialize Params Object
let Params = new HttpParams();
// Begin assigning parameters
Params = Params.append('firstParameter', firstVal);
Params = Params.append('secondParameter', secondVal);
следующие будут изменения, вам нужно сделать:
-
замените старый импорт Http на:
импорт { HttpClient } из "@angular / common / http";
-
создайте объект HttpClient, как показано ниже:
конструктор( защищены с помощью HttpClient: с помощью HttpClient, ) {}
теперь есть способы достижения параметра поиска, а именно, как показано ниже:
public get(searchParam: string): наблюдаемый { возвращаться этот.с помощью HttpClient.get (
${this.URL}/${searchParam}
); }
или:
public get(searchParam: string): Observable<object> {
let headers = new Headers({ 'Content-Type': 'application/json' });
let myParams = HttpParams().set("id", searchParam);
let options = new RequestOptions({ headers: headers, method: 'get', params: myParams });
return this.http.get("this.url",options)
.map((res: Response) => res.json())
.catch(this.handleError);
}
У меня была ситуация, когда было несколько параметров, которые нужно было передать api. Единственное, что сработало для меня, это при вызове метода set () в одной строке, скованной вместе во время intialization объекта HttpParams:
public get(userid: string, username: string): Observable<object> {
let headers = new Headers({ 'Content-Type': 'application/json' });
let myParams = HttpParams().set("id", userid).set("username", username);
let options = new RequestOptions({ headers: headers, method: 'get', params:
myParams });