角度-可观察的滤镜不是函数

时间:2018-07-14 22:43:51

标签: angular typescript filter rxjs observable

在我的数据库中,我有一些用户都需要完成家庭作业。每个作业都有一个唯一ID 唯一名称日期和其他元数据

从数据库中检索时,用户的所有作业都存储在private userHomework: Observable<any>中。然后,我希望通过用户键入的名称来搜索特定的作业。

我使用以下功能:

this.userHomework = this.userHomework.map(allHomework => 
    allHomework.filter(homeworkSession =>
 homeworkSession.name.toLowerCase().includes(this.userInput.toLowerCase())));

但是,执行该命令时,出现以下错误:allHomework.filter is not a function

我尝试以两种不同的方式导入过滤器:

import 'rxjs/add/operator/filter';

import { filter } from 'rxjs/operators';

使用第二次导入时,我还会收到以下警告:

[ts] 'filter' is declared but its value is never read.

谁能解释我的错误在哪里以及如何成功过滤我的Observable?

1 个答案:

答案 0 :(得分:0)

在您的情况下,

allHomework不是Observable而是any发出的userHomework(如您所声明的)。 filter()函数可能会应用于数组,因此请尝试以下操作:

  • 确保allHomework是一个数组
  • 声明:private userHomework: Observable<any>[]
  • 删除Observable的filter导入