【发布时间】:2019-11-27 22:05:57
【问题描述】:
我有一个问题,我想删除/添加任何以前添加的 observable 运算符。
我得到了以下我无法更改的可观察值:
let objects$ = of([{
category: 1,
name: 'Some1'
}, {
category: 2,
name: 'Some2'
}]).pipe(
map(o => o.filter(b => b.category === 2))
)
objects$.subscribe(obj => console.log(obj));
如预期的那样输出:{category: 2,name: 'Some2'}。
现在我想把过滤器的值改成b.category === 1输出{category: 1,name: 'Some1'}。
如果我执行以下操作:
objects$.pipe(
map(o => o.filter(b => b.category === 1))
)
objects$.subscribe(obj => console.log(obj));
我仍然收到{category: 2,name: 'Some2'}。
如果我这样做:
objects$ = objects$.pipe(
map(o => o.filter(b => b.category === 1))
)
objects$.subscribe(obj => console.log(obj));
我得到 [] 因为 observable 的输出不再具有类别 1。
我的问题是如何从原始 observable 中删除 .pipe() 以添加新的?
【问题讨论】:
-
如果你得到的已经是过滤后的 observable,你什么也做不了。如果可能,objects$ 应该在没有过滤器的情况下声明,只是 of(...)。那么它可以根据用例在多个地方使用。
-
为什么不能改?如果你使用map,那么你的源 observable 就会发生变异。
标签: angular rxjs observable