2016-07-20 3 views
11

Я хочу отправить параметры запроса в запросе GET. Мой класс выглядит следующим образом:Угловой 2 http.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 
    } 
} 

Как это сделать?

+2

Возможный дубликат [Как передать аргументы URL (строки запроса) для запроса HTTP на Угловое 2] (http://stackoverflow.com/questions/34475523/how-to-pass-url-arguments-query-string-to-a-http-request-on-angular-2) –

ответ

40

Вы можете использовать в 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.

Смотрите документацию этого класса:

она теперь поддерживает поставщиков параметров кодирования/декодирования.

+0

Большое спасибо. Я пробую это: https://gyazo.com/d84e2f55d3df86030aa5ed01b0f99a0c, но у меня есть нулевое значение в контроллере сервера https://gyazo.com/bf675ca73b88c858afb39982aa105a99 –

+0

Добро пожаловать! Кажется, вы пытаетесь получить свои параметры от полезной нагрузки, а не от строки запроса. Если это не запрещено для запросов GET, лучше использовать строку запроса ... –

+1

Любая догадка, почему моя функция .set не сработает? Похоже, что он вообще не изменяет объект URLSearchParams. – ThePartyTurtle

11

Это довольно просто - вы можете определить 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 }); 
+5

Не забудьте добавить эту строку вверху: import {URLSearchParams} из '@ angular/http'; – user3757628

+0

этот ублюдок был у меня! –

-6

Когда 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"]; 
    } 
} 
+0

Этот вопрос очень старый. Он также спрашивает, как установить параметры, а не как их читать. – MikeOne

+0

Извините, Название «Angular 2 http.get with params». Я занимался только заголовком (только GET без SET). Если у вас отсутствуют пропущенные PLS, забудьте об этом. – Trung

+0

вопрос относится к параметрам настройки для запроса http.get – ForrestLyman