【发布时间】:2021-02-19 14:33:15
【问题描述】:
我有一个初始数据:const menuItems = [{id: 1, active: false}, {id: 2, active: false}]
public menuSubject$ = new BehaviorSubject<MenuItem[]>(menuItems);
public menu$ = this.menuSubject$.asObservable();
我尝试修改id: 1:
modify(id: number) {
const menuItemsUpdated = this.menuSubject$.getValue().map((item) => {
if(item.id === id) {
return {...item, active: true};
}
return item;
});
this.menuSubject$.next(menuItemsUpdated);
}
我想知道使用 async getValue() 并将其推回是正确的方法吗?
【问题讨论】:
-
没关系。更多 rxjs 方法是创建更新 $ 并将其与原始流合并以构建结果值,但在您的特定情况下,它只是解决相同问题的更复杂的方法
-
你能分享一下这个描述的方法吗?
-
我的代码修改了数组的所有项目。所以出了点问题
-
它没有修改所有项目。你为什么认为会这样?
-
这是一个很好的问题,几个月前我问了很多问题"RXJS - BehaviorSubject: proper use of .value"。您可能会发现一些有趣的答案。
标签: javascript angular typescript rxjs