我在angularFirestore中有一个可观察到的users.service.ts数组:
$users: Observable<Array<any>>;
constructor()
{
this.$users = this.angularFirestore.collection('users').valueChanges();
}这是object类:
class User
{
name: string;
status: boolean;
index: number;
}我需要基于多个字段进行筛选,但在users.component.ts中使用以下代码不订阅任何结果:
users: Users[];
ngOnInit()
{
this.usersService.$users.pipe
(filter((user: User) => user.name == 'some value'))
.subscribe((users: User[]) =>
{
this.users = users;
});
}我的最终目标是能够过滤以包含user.name搜索字符串和user.status == true,并排除其他无效结果。
我想在没有管道的情况下这样做。如能帮助纠正和改进现有的代码以实现上述目标,我将不胜感激。提前感谢!
发布于 2018-10-14 09:14:19
不太确定.pipe有什么问题。但是,一旦在.subscribe中获得数组,您也可以这样做。
users: Users[];
ngOnInit() {
this.usersService.$users
.subscribe((users: User[]) => {
this.users = users.filter(user => user.status && user.name === 'some value')
});
}顺便说一句,这是,而不是kunwar97提到的bug。这是在Rxjs6中将运算符应用于可观测值的唯一方法。
发布于 2018-10-14 09:00:43
这是已知的问题角6。请参阅此链接。https://github.com/angular/angularfire2/issues/1748
安装rxjs-compact将解决您的问题。
npm install rxjs@6 rxjs-compat@6 --savehttps://stackoverflow.com/questions/52800850
复制相似问题