Angular 2 http.get с параметрами
Я хочу отправить параметры запроса в запросе GET. Мой класс выглядит следующим образом:
@Injectable()
export class Loader implements TranslateLoader{
constructor(private http: Http){
}
getTranslation(lang: string): Observable<any>
{
return this.http.get(routes.Localization.Get) ;// in that place I need to pass params
}
}
Как я могу это сделать?
Ответы
Ответ 1
Вы можете использовать класс URLSearchParams
для этого:
getTranslation(lang: string): Observable<any> {
let params = new URLSearchParams();
params.set('param1', 'value1');
return this.http.get(routes.Localization.Get, { search: params });
}
Это приведет к URL-адресу, подобному этому (параметры добавляются в строку запроса): http://...?param1=value1
.
Смотрите документацию этого класса:
Теперь провайдеры поддерживают параметры кодирования/декодирования.
Ответ 2
Это довольно просто - вы можете определить свой URLSearchParams
и передать их во втором параметре метода http.get
:
import { URLSearchParams } from '@angular/http'
let params: URLSearchParams = new URLSearchParams();
params.set('param1', 'someValue');
params.set('param2', 'someValue');
return this.http.get(routes.Localization.Get, { search: params });
Ответ 3
Когда такой URL-адрес http://stackoverflow.com?param1=value
Вы можете получить param1 по коду:
import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute, Params } from '@angular/router';
@Component({
selector: '',
templateUrl: './abc.html',
styleUrls: ['./abc.less']
})
export class AbcComponent implements OnInit {
constructor(private route: ActivatedRoute) { }
ngOnInit() {
// get param
let param1 = this.route.snapshot.queryParams["param1"];
}
}