在Angular2中的observable过滤器中不存在函数

时间:2016-10-28 20:11:40

标签: angular reactive-programming

我有以下代码查找一个术语,然后从包含该字符串的数组中返回元素。但是,运行时出现以下错误: user.indexOf不是函数

在Observables上使用时,某些内置函数是否在过滤器中不起作用?

import { Injectable } from '@angular/core';
import { AngularFire } from 'angularfire2';
import { Person } from '../person';
import {Observable} from "rxjs";
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/map';

@Injectable()
export class UserSearchService {

  constructor(private af: AngularFire) { }

  search(term: string): Observable<Person[]> {
    return this.af.database.list('/users')
      .map(users => {
        return users.filter(user => {
          return user.indexOf(term) > -1;
        })
      })
  }

}

1 个答案:

答案 0 :(得分:0)

user的值不是字符串,而是一些其他对象(可能是基于import语句的类型Person)。在indexOf的相应字符串属性上调用user。所以像这样:

...
return user.name.indexOf(term) > -1
...