在Angular应用中,我正在寻找一种运算符/一种使用rxjs构建可观察对象的方法,但我不知道该怎么做。
我需要的是一个(相当简单的)过滤器功能,但是我无法使其工作。
源1是一个数组。 源2是一个文本框(用于过滤数组)。
this.source1 = of (['abc', 'aef', 'ahi', 'jkl', 'xyz']);
this.filterBox = new FormControl();
combineLatest(
source1,
this.filterBox.valueChanges,
(items, filter) => {
console.log(items, filter);
return items.filter(item => item.includes(filter));
}
).subscribe(val => console.log(val));
当filterBox为空并因此不发出任何东西时,这应该在开始时输出整个数组。
我尝试了CombineLatest,但文档显示:
只要每个源Observable发出了至少一个 项目
与withLatestFrom相同。
此处应使用什么运算符?
答案 0 :(得分:3)
您可以使用startWith运算符为可观察值赋予初始值。 像这样:
combineLatest(
source1,
this.filterBox.valueChanges.pipe(startWith("")),
(items, filter) => {
console.log(items, filter);
return items.filter(item => item.includes(filter));
}
).subscribe(val => console.log(val));
从此处了解更多信息https://coryrylan.com/blog/subscribing-to-multiple-observables-in-angular-components