我目前有一组可观察对象,我正在使用异步管道使用*ngFor
循环进行迭代。
我想通过对象的属性值过滤observable,例如
原始阵列:
[{ name: test1,
type: type1},
{ name: test2,
type: type2}
{ name: test3,
type: type1}
{ name: test4,
type: type2}]
我想过滤这个并制作两个新的可观察(数组),一个用于type1,一个用于type2
我尝试了obs.filter(x => x.type == "type1)
,但没有返回任何内容
然后我尝试了obs.mergeAll().filter(x => x.type == "type1")
并且我可以订阅并正确地将其记录到控制台,但现在它不能与我的*ngFor
(异步管道)一起工作。我猜它是因为mergeAll
意味着它不再是一个可观察的数组?所以我需要将其转换回来吗?
答案 0 :(得分:0)
您可能缺少RXJS6中的管道运算符。
import { of, from } from "rxjs";
import { filter, map } from "rxjs/operators";
const obs = from([{
name: 'test1',
type: 'type1'
},
{
name: 'test2',
type: 'type2'
},
{
name: 'test3',
type: 'type1'
},
{
name: 'test4',
type: 'type2'
}]);
const source = obs.pipe(
filter(data => data.type === 'type2')
)
console.log(source.subscribe(item => console.log(item)));
// prints {name: "test2", type: "type2"}
{name: "test4", type: "type2"}
如果要获取数组:
const items = [];
console.log(source.subscribe(item => items.push(item)));
console.log(items);