2017-11-01 2 views
1

Beim Senden einer GET-Anforderung mit Abfrageparametern mit Angular2 http werden die gesendeten Parameter nicht wie erwartet gesendet. Anstelle des Standardschlüsselwertpaares, z.B.Angular2 HttpParams nicht wie erwartet gesendet

key1=val1&key2=val2

es als die HttpParams gesendet Wesen Objekt z.B.

%7B%22param%22:%key1%22,%22value%22:%22val1%22,%22op%22:%22a%22%7D

* decodiert: {"param":"key1","value":"val1","op":"a"}

Im Folgenden ein Ausschnitt aus meinem Code ist:

getAllPlayers(fantasyFormat: string, draftFormat: string): Observable<Player[]> { 
    let params = new HttpParams(); 
    params = params.append('fantasyFormat', fantasyFormat); 
    params = params.append('draftFormat', draftFormat); 

    return this.http.get(this.playersUrl, {params: params}) 
     .map((res: Response) => res.json()) 
     .catch((error: any) => Observable.throw(error.json().error || 'Server error')); 
    } 

nicht sicher, was hier schief geht, scheint mit anderen Beispielen konsistent zu sein I bin gefolgt ...

Antwort

1
getAllPlayers(fantasyFormat: string, draftFormat: string): Observable<Player[]> { 
    return this.http.get(`${this.playersUrl}?fantasyFormat=${fantasyFormat}&draftFormat=${draftFormat}`) 
     .map((res: Response) => res.json()) 
     .catch((error: any) => Observable.throw(error.json().error || 'Server error')); 
    } 

Ich würde vorschlagen, es so zu machen. Ich sehe keine Notwendigkeit, HttpParams hier zu verwenden. Ich habe sie auch nie in meinem Code verwendet. Ich werde über sie lesen, aber es scheint mir, dass es keinen Unterschied gibt außer Syntax und URI-Codierung zwischen diesen Fällen.

+0

Danke @ vitalii-chmovzh. Das Hinzufügen der Parameter als Teil der URL funktioniert. HttpParams ist aus einem Grund verfügbar, würde gerne sehen, wie es richtig verwendet wird. – rossco

Verwandte Themen