angular - 从 Observable 中移除特定的观察者
问题描述
我有一些包含两个数组的观察者
source: BehaviorSubject
observers: (29) [Subscriber, Subscriber, ... FilterSubscriber]
_value:
leftTitles: (15) ["a", "b",... ]
name: "x"
rightTitles: (14) ["c", "d"...]
我做这样的事情看起来不太好,但工作
const index = this.obs$.source['_value']['leftTitles'].indexOf(tile);
this.obs$.source['_value']['leftTitles'].splice(index, 1);
并尝试使用管道和过滤器进行类似的操作
this.obs$ = this.obs$.pipe(filter(
res => {
return res.leftTitles !== tile;
})
);
是否可以使用运算符或其他方法从 Observable 中的数组 leftTiles 或 rightTiles 中删除特定的观察者?
解决方案
注意:正如@Adam 所指出的,以前的版本有很多问题。如果有人有兴趣,他们可以从下面的编辑链接中查找以前的版本。
因此,在再次查看解决方案后,我意识到我在做一个多么愚蠢的错误。我为自己犯的那种错误感到尴尬。
由于 OP,想要对BehaviorSubject
. 所以现在我们简单地使用map
运算符,因为我们需要转换对象而不是filtering
它。这filter
意味着您将collection
根据某些条件从 a 中删除一些值。所以最终的解决方案是这样的。
首先定义一个函数来过滤数组,这不是必需的,但是嗯......
function arrFilter(tile) {
return element => { element != tile; };
}
和数组过滤部分。
this.obs$ = this.obs$.pipe(map(res => ({...res, leftTitles: res.leftTitles.filter(arrFilter("1"))})));
推荐阅读
- clojure - 如何正确检查 Java Interop 中的布尔值?
- sql - SQL 函数创建
- git - git double change,大小写相同的文件名
- javascript - Django:jQuery触发表单提交onchange of checkbox并保留重新加载时的值
- c# - 当桌面区域更改时,Appbar 会移动
- php - 使用 mysqli_connect() 创建到 mysql 的远程连接
- tableau-api - 如何使用自定义 JOIN 计算仅返回值的最后两个单词?
- c# - 为什么无法识别字母“Ñ”?
- java - 如何在java中为一个对象赋予多个角色?
- symfony - Bundles 不会自动创建它们的 .yaml 文件