javascript - Ändra en egenskap hos ett objekt i en pipe (rxjs)
Jag har ett objekt Person.
interface Person {
name: string;
age: number;
}
Jag får en ström av Persons med hjälp av en observabel.
getPersons(): Observable<Person> {
return this.myService.getPerons.subscribe(data);
}
Jag vill göra en ändring i åldersfältet och behålla namnet som det är
person.age = person.age + 2;
Exempel :
Originalström: {namn: 'John doe', ålder: 40}.
Efter att ha tillämpat rör: {name. 'John doe', age: 42}
Jag antar att .subscribe(data).pipe(map(e => ...)) inte är lösningen här och jag letar efter ett alternativ att använda på pipen
Svar #1
Du kan göra det med map-operatorn i tjänsten. Prova följande
minTjänst
getPerons(): Observable<Person> {
this.http.get('url').pipe(map(response => ({...response, age: response.age + 2})));
}
Och du kunde prenumerera som vanligt i komponenten
this.myService.getPerons.subscribe(data => { this.persons = data });
Svar #2
map är också en lösning, och du kan också använda bara tap eller bara modifiera i subscribe. Men du behöver använda dem innan subscribe
.pipe(tap(e => /**/)).subscribe(data) -> this can omit the return data
.pipe(map(e => /**/)).subscribe(data) -> this must return data
