Angular 4.3 - HttpClient set params
let httpParams = new HttpParams().set('aaa', '111');
httpParams.set('bbb', '222');
Warum das nicht funktioniert?
Sie stellen nur die 'aaa' und NICHT das 'bbb'
Außerdem habe ich ein Objekt { aaa: 111, bbb: 222 }
Wie kann ich einstellen, dass alle Werte ohne Schleife?
UPDATE (dieser scheint zu funktionieren, aber wie Sie vermeiden können, den loop?)
let httpParams = new HttpParams();
Object.keys(data).forEach(function (key) {
httpParams = httpParams.append(key, data[key]);
});
InformationsquelleAutor der Frage Michalis | 2017-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vor 5.0.0-beta.6
Seit 5.0.0-beta.6
InformationsquelleAutor der Antwort Michalis
HttpParams soll unveränderlich sein. Die
set
undappend
Methoden nicht ändern, wird die vorhandene Instanz. Statt Sie zurückzugeben, neue Instanzen mit den änderungen anzuwenden.Dieser Ansatz funktioniert gut mit der Methode Verkettung:
...obwohl, dass wäre umständlich, wenn Sie müssen wickeln alle von Ihnen in den Bedingungen.
Deine Schleife funktioniert, weil Sie packte eine Referenz auf die neue Instanz zurückgegeben. Der code, den Sie gepostet, dass das nicht funktioniert, nicht. Man ruft einfach die set() ist aber nicht schnappen Sie das Ergebnis.
InformationsquelleAutor der Antwort Rich
In neueren Versionen von
@angular/common/http
(5.0 und höher, von den blicken von ihm), können Sie diefromObject
SchlüsselHttpParamsOptions
übergeben das Objekt gerade:Dieser läuft einfach ein
forEach
Schleife unter der Haubeaber:InformationsquelleAutor der Antwort jonrsharpe
Als für mich, Verkettung
set
Methoden der sauberste WegInformationsquelleAutor der Antwort Mike Kovetsky
Andere Möglichkeit, es zu tun ist:
InformationsquelleAutor der Antwort Leibale Eidelman
Kann man dadurch vermeiden Sie die Schleife.
Darüber hinaus schlage ich vor, machen toHttpParams Funktion in Ihre Häufig verwendeten service. So können Sie rufen Sie die Funktion konvertieren Sie das Objekt in der HttpParams.
Update:
Dies ist der andere Grund, wenn Sie haben eine gemeinsame Funktion wie toHttpParams oben erwähnt, können Sie leicht entfernen Sie es, oder tun Sie änderungen, falls erforderlich.
InformationsquelleAutor der Antwort Lahar Shah
Soweit ich sehen kann, die Umsetzung auf https://github.com/angular/angular/blob/master/packages/common/http/src/params.ts
Müssen Sie die Werte getrennt - Sie sind nicht in der Lage, um zu vermeiden, dass Ihre Schleife.
Gibt es auch ein Konstruktor nimmt einen string als parameter, sondern es ist in form
param=value¶m2=value2
so gibt es kein Angebot für Sie (in beiden Fällen werden Sie fertig mit looping Ihrem Objekt).Können Sie immer melden Sie ein Problem/feature request zu eckig, was ich raten:
https://github.com/angular/angular/issues
PS: denken Sie Daran, über den Unterschied zwischen
set
undappend
Methoden 😉InformationsquelleAutor der Antwort Maciej Treder
2 Einfache Alternativen
InformationsquelleAutor der Antwort Debojyoti
Da @MaciejTreder bestätigt, dass wir haben, um eine Schleife, hier ist ein wrapper, die Sie Optional hinzufügen lassen, um eine Reihe von Standard-params:
Können Sie es verwenden, etwa so:
InformationsquelleAutor der Antwort James Irwin
Da die HTTP-Params-Klasse ist unveränderlich, daher müssen Sie sich an die Kette
set-Methode:
InformationsquelleAutor der Antwort Adnan Abdul Khaliq