2016-07-20 19 views
11

Chcę wysłać parametry zapytania w ramach żądania GET. Moja klasa wygląda następująco:Angular 2 http.get z parametrami

@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 
    } 
} 

Jak mogę to zrobić?

+2

Możliwy duplikat [Jak przekazywać argumenty URL (ciąg kwerendy) do żądania HTTP na kątowa 2] (http://stackoverflow.com/questions/34475523/how-to-pass-url-arguments-query-string-to-a-http-request-on-angular-2) –

Odpowiedz

40

można wykorzystać klasę URLSearchParams na to:

getTranslation(lang: string): Observable<any> { 
    let params = new URLSearchParams(); 
    params.set('param1', 'value1'); 

    return this.http.get(routes.Localization.Get, { search: params }); 
} 

ten spowoduje powstanie takiego adresu URL (parametry są dodawane w ciągu zapytania): http://...?param1=value1.

Zobacz dokumentację tej klasy:

teraz udzielających wsparcia dla parametrów kodowania/dekodowania.

+0

Wielkie dzięki. Próbuję tego: https://gyazo.com/d84e2f55d3df86030aa5ed01b0f99a0c ale mam wartość null w moim kontrolerze serwera https://gyazo.com/bf675ca73b88c858afb39982aa105a99 –

+0

Nie ma za co! Wygląda na to, że próbujesz uzyskać swoje parametry z ładunku, a nie z ciągu zapytania. Podczas gdy żądania GET nie są zabronione, lepiej zastosować ciąg kwerendy ... –

+1

Jakiegokolwiek odgadnięcia, dlaczego moja funkcja .set zawiedzie? Wygląda na to, że wcale nie zmienia obiektu URLSearchParams. – ThePartyTurtle

11

Jest to bardzo proste - można zdefiniować URLSearchParams i przekazać je w drugim parametrze metody 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

Pamiętaj, aby dodać tę linię na górze: importuj {URLSearchParams} z '@ kątowego/http'; – user3757628

+0

ten robak mnie miał! –

-6

Gdy URL jak ten http://stackoverflow.com?param1=value

można uzyskać param1 przez kod następująco:

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

To pytanie jest bardzo stare. Pyta również, jak ustawić parametry, a nie jak je odczytać. – MikeOne

+0

Niestety, Tytuł to "Angular 2 http.get with params". Skupiłem się tylko na tytule (tylko GET bez SET). Jeśli masz brakujące pls, zapomnij o tym. – Trung

+0

pytanie dotyczy ustawiania parametrów dla żądania http.get – ForrestLyman