【发布时间】:2021-11-29 14:00:23
【问题描述】:
我正在向服务器发送修改其中一个用户的请求。
作为响应,服务器发回更新的用户。
之后我尝试像这样更新所有用户的 BehaviorSubject:
private currentHeroes = new BehaviorSubject<Hero[]>(null);
currentHeroes$ = this.currentHeroes.asObservable();
powerUp(id: number) {
return this.http
.post<Hero>(environment.apiUrl + 'heroes/powerUp/' + id, {})
.pipe(
tap((updatedHero: Hero) => {
this.currentHeroes.next(
this.currentHeroes.value.map((hero: Hero) =>
hero.id === updatedHero.id ? updatedHero : hero
).sort(a=>a.currentPower)
);
})
);
}
删除时:
delete(id: number) {
return this.http.delete<Hero>(environment.apiUrl + 'heroes/' + id).pipe(
tap((deletedHero: Hero) => {
this.currentHeroes.value.filter(
(hero: Hero) => hero.id !== deletedHero.id
);
})
);
}
我正在尝试修改用户数组。用更新的用户替换旧用户。
而且代码没有到达 currentHeroes$ 的管道。 我不确定为什么会发生这种情况,或者我该如何解决。
我尝试从管道返回一个值或使用 tap 而不是 map 但没有运气。
有没有人可以看看向我解释为什么会发生这种情况?或者我该如何解决?
谢谢!
【问题讨论】:
标签: angular rxjs behaviorsubject