2016-10-28 3 views
0

다음 단어를 찾아서 해당 문자열이 들어있는 배열에서 요소를 반환하는 코드가 있습니다. 그러나 나는 이것을 실행할 때 다음과 같은 오류가 발생합니다. user.indexOf가 함수가 아닙니다.Angular2에서 관찰 할 수있는 필터에 함수가 없습니다.

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; 
     }) 
     }) 
    } 

} 
+2

사용자가 문자열입니까? 그것의 외관에서, 나는 왜 indexOf가 그것에 대한 방법이 아닌지 설명 할 수있는 다른 종류의 객체라고 추측하고있다. –

+0

메소드의 서명에 기반하여, 사용자는 Person 유형이고, Person은 아마 어떤 것도 가지지 않는다. indexOf 메소드. –

+0

아 물론. 감사! – user3642173

답변

0

user의 값은 문자열하지만 다른 목적은 (아마 당신의 import 문을 기준으로 입력 Person의) 없습니다. 해당 문자열 속성 userindexOf을 호출하십시오. 그래서 이런 식으로 :

... 
return user.name.indexOf(term) > -1 
... 
관련 문제