HttpParams is immutable.
set()
erstellt und gibt eine neue HttpParams Instanz, ohne die Instanz mutiert, auf dem set()
genannt wird.
So sollte der Code
const params = new HttpParams().set('personId', personId);
Hier ist eine weitere Sache, die ich mit bei der Verwendung dieses neuen HttpParams gekämpft, manchmal haben wir eine Anzahl von n params, an, dass es nützlich Zeit zu totzuschlagen ist eine Funktion haben, die das Parameter-Objekt (das wir vor Angular 4.3 benutzt haben) in die HttpParams konvertiert.
Ich schlage vor, toHttpParams Funktion in Ihrem häufig verwendeten Service zu machen. Sie können also die Funktion aufrufen, um das Objekt in HttpParams zu konvertieren.
/**
* Convert Object to HttpParams
* @param {Object} obj
* @returns {HttpParams}
*/
toHttpParams(obj: Object): HttpParams {
return Object.getOwnPropertyNames(obj)
.reduce((p, key) => p.set(key, obj[key]), new HttpParams());
}
Update:
Seit 5.0.0-beta.6 (2017.09.03) sie neue Funktion (accept object map for HttpClient headers & params)
In Zukunft das Objekt hinzugefügt werden kann, übergeben direkt anstelle von HttpParams.
Dies ist der andere Grund, wenn Sie eine gemeinsame Funktion wie toHttpParams verwendet haben oben erwähnt, können Sie es leicht entfernen oder Änderungen tun, falls erforderlich.
Ja, ich sehe das jetzt, Danke! – ocespedes