2016-07-20 82 views
11

Bir GET isteği içinde sorgu parametreleri göndermek istiyorum. Sınıfım şunun gibi görünüyor:Açısal 2 http.get params ile

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

Bunu nasıl yapabilirim?

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

Olası kopyalar [bir HTTP isteğine url argümanları (sorgu dizesi) geçmek nasıl Eğik 2] (http://stackoverflow.com/questions/34475523/how-to-pass-url-arguments-query-string-to-a-http-request-on-angular-2) –

cevap

40

Bunun için URLSearchParams sınıf kaldıraç olabilir:

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

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

Bu -

+0

Çok teşekkürler. Ben bunu deneyin: https://gyazo.com/d84e2f55d3df86030aa5ed01b0f99a0c ama benim sunucu denetleyicisinde null değeri var https://gyazo.com/bf675ca73b88c858afb39982aa105a99 –

+0

Bir şey değil! Görünüşe bakılırsa, paramınizi, sorgu dizisinden değil, yükten almayı deneyebilirsiniz. GET istekleri için yasak olmasa da, sorgu dizgisinden yararlanmak daha iyidir ... –

+1

Herhangi bir tahmin neden benim .set işlevim başarısız olur? URLSearchParams nesnesini hiç değiştirmiyor gibi görünüyor. – ThePartyTurtle

11

Bu oldukça basit size URLSearchParams tanımlayıp http.get yönteminin ikinci parametresine onları geçebilir bu gibi bir URL ile sonuçlanır (parametreler sorgu dizesine eklenir): http://...?param1=value1. şifreleme/şifre çözme parametreleri için

Artık sağlayıcıları desteği:

bu sınıfın belgelere bakın.

+5

Bu satırı en üste eklemeyi unutmayın: içe aktarma {URLSearchParams}, '@ açısal/http'; – user3757628

+0

bu bugger beni yakaladı! –

-6

bu http://stackoverflow.com?param1=value

gibi bir URL Sen kod takip ile param1 alabilirsiniz Ne zaman:

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

Bu soru çok eski. Aynı zamanda SET'lerin nasıl okunacağını değil de nasıl parametreler yazılacağını sorar. – MikeOne

+0

Üzgünüm, Başlık, "Paragraflı açısal 2 http.get" dir. Sadece başlığa odaklandım (sadece SET olmadan GET). Herhangi bir eksik varsa lütfen unutun. – Trung

+0

soru, bir http.get isteği için ayar parametrelerini ifade eder – ForrestLyman