首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rxjs6滤波器Observable<Array<any>>

rxjs6滤波器Observable<Array<any>>
EN

Stack Overflow用户
提问于 2018-10-14 08:28:18
回答 2查看 142关注 0票数 0

我在angularFirestore中有一个可观察到的users.service.ts数组:

代码语言:javascript
复制
$users: Observable<Array<any>>;
constructor()
{
    this.$users = this.angularFirestore.collection('users').valueChanges();
}

这是object类:

代码语言:javascript
复制
class User
{
    name: string;
    status: boolean;
    index: number;
}

我需要基于多个字段进行筛选,但在users.component.ts中使用以下代码不订阅任何结果:

代码语言:javascript
复制
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,并排除其他无效结果。

我想在没有管道的情况下这样做。如能帮助纠正和改进现有的代码以实现上述目标,我将不胜感激。提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-14 09:14:19

不太确定.pipe有什么问题。但是,一旦在.subscribe中获得数组,您也可以这样做。

代码语言:javascript
复制
users: Users[];
ngOnInit() {
  this.usersService.$users
    .subscribe((users: User[]) => {
      this.users = users.filter(user => user.status && user.name === 'some value')
    });
}

顺便说一句,这是,而不是kunwar97提到的bug。这是在Rxjs6中将运算符应用于可观测值的唯一方法。

票数 1
EN

Stack Overflow用户

发布于 2018-10-14 09:00:43

这是已知的问题角6。请参阅此链接。https://github.com/angular/angularfire2/issues/1748

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

代码语言:javascript
复制
npm install rxjs@6 rxjs-compat@6 --save
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52800850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档