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"];
    }
}