【发布时间】:2019-03-15 00:49:03
【问题描述】:
我有一个包含对象对象的数组的可观察对象。 (如图所示)。我有一个observable 从get 请求接收这些值,然后我有另一个observable 用于存储过滤值。我有一个 binded 到 input 的 searchText 变量,每次输入更改时我都会调用一个函数。
<input name="problem-search" [(ngModel)]="searchText" matInput placeholder="Search for problems..." (input)="filterProblems()">
到目前为止,我已经尝试过这个,但它没有产生所需的输出。它有时会过滤,但这是随机的,甚至与searchInput 无关。坦率地说,我什至不知道我是如何得到那个输出的。 Rxjs 有时可能会令人困惑。请让我知道我在这里做错了什么。
filterProblems() {
if (this.searchText === '') {
this._filteredProblems$ = this._everyProblem$;
}
this._filteredProblems$ = this._everyProblem$.pipe(
map(data => data),
tap(ele => ele.filter(data => {
Object.keys(data).forEach(key => {
if (data[key].name.toLowerCase().includes(this.searchText)) {
delete data[key];
}
});
}))
);
this._filteredProblems$.subscribe(data => console.log(data))
}
【问题讨论】:
-
你想达到什么目的?目前,如果它与
searchText匹配,则您正在删除它 -
@SachinGupta 根据 searchInput 过滤
this._everyProblem$,并将结果分配给._filteredProblems$。
标签: angular rxjs observable rxjs6