rxjs6 过滤器 Observable<Array<any>>

rxjs6 filter Observable<Array<any>>

我在里面有一个 angularFirestore 可观察数组 users.service.ts:

$users: Observable<Array<any>>;
constructor()
{
    this.$users = this.angularFirestore.collection('users').valueChanges();
}

这是对象 class:

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 并排除其余无效结果.

我想在没有管道的情况下执行此操作。对于纠正和改进现有代码以实现上述目标的任何帮助,我们将不胜感激。提前致谢!

这是 Angular6 中的已知问题。 请参考这个link。 https://github.com/angular/angularfire2/issues/1748

安装 rxjs-compact 将解决您的问题

npm install rxjs@6 rxjs-compat@6 --save

不太确定 .pipe 你的问题是什么。但是,一旦将数组放入 .subscribe

中,您也可以这样做
users: Users[];
ngOnInit() {
  this.usersService.$users
    .subscribe((users: User[]) => {
      this.users = users.filter(user => user.status && user.name === 'some value')
    });
}

顺便说一句,不是 kunwar97 提到的错误。这是在 Rxjs6 中将运算符应用于 Observables 的唯一方法。