2016-07-20 4 views
11

Ich möchte Abfrageparameter innerhalb einer GET-Anfrage senden. Meine Klasse sieht so aus:Angular 2 http.get mit Parametern

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

Wie kann ich das tun?

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 }); 
+2

Mögliche Duplikat [Wie url Argumente (Query-String) auf eine HTTP-Anfrage an Angular passieren 2] (http://stackoverflow.com/questions/34475523/how-to-pass-url-arguments-query-string-to-a-http-request-on-angular-2) –

Antwort

40

Sie nutzen die URLSearchParams Klasse für diese:

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

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

This -

+0

Vielen Dank. Ich versuche dies: https://gyazo.com/d84e2f55d3df86030aa5ed01b0f99a0c aber ich habe Null-Wert in meinem Server-Controller https://gyazo.com/bf675ca73b88c858afb39982aa105a99 –

+0

Gern geschehen! Es scheint, dass Sie versuchen, Ihre Parameter von Payload und nicht von Abfragezeichenfolge abzurufen. Obwohl es für GET-Anfragen nicht verboten ist, ist es besser, die Abfragezeichenfolge zu verwenden ... –

+1

Irgendeine Schätzung, warum meine .set-Funktion fehlschlagen würde? Es sieht so aus, als würde es das URLSearchParams-Objekt überhaupt nicht verändern. – ThePartyTurtle

11

Das ist ziemlich einfach können Sie Ihre URLSearchParams und geben sie in den zweiten Parameter des http.get Methode definieren wird zu einer URL wie folgt führen (Parameter werden in der Abfragezeichenfolge hinzugefügt): http://...?param1=value1.

finden Sie in der Dokumentation dieser Klasse:

Es jetzt Support-Anbieter für die Codierung/Decodierung Parameter.

+5

Denken Sie daran, diese Zeile an der Spitze hinzuzufügen: Importieren Sie {URLSearchParams} von '@ angular/http'; – user3757628

+0

dieser bugger hatte mich! –

-6

Wenn eine URL wie diese http://stackoverflow.com?param1=value

Sie können die param1 von Code folgen erhalten:

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

Diese Frage ist sehr alt. Es fragt auch, wie man Parameter einstellt, nicht wie man sie liest. – MikeOne

+0

Entschuldigung, Der Titel ist "Angular 2 http.get mit params". Ich habe mich nur auf den Titel konzentriert (nur GET ohne SET). Wenn etwas fehlt, vergessen Sie es. – Trung

+0

Die Frage bezieht sich auf das Festlegen von Parametern für eine http.get-Anfrage – ForrestLyman