2016-07-27 3 views
3

В этом plunker Я пытаюсь использовать оператор фильтра на угловом2 наблюдаемом (Rxjs) внутри класса member.service.ts. Наблюдаемая забирается с запросом HTTP, который я обрабатывать следующим образом:Оператор фильтра Rxjs, не работающий с Angular2 Observable

getMembers(): Observable<Member[]> { 
    var one = this.http.get(this.memberUrl) 
    .map(this.extractData) 
    //.filter(x => x.type==='member') 
    return one 
} 

Мой вопрос: Почему бы список не оказывать, когда я раскомментировать строку с фильтром (пожалуйста, смотрите данных памяти в-. service.ts)? По-моему, наблюдаемое состояние находится в состоянии объекта после оператора карты и не имеет свойства типа. не уверен, хотя !.

ответ

3

Ваш наблюдаемый - это отдельный элемент, представляющий собой массив. Это не наблюдение за элементами внутри этого массива. x в вашей функции фильтра: x=> x.type ==="member" - массив, поэтому x.type не существует. Чтобы выполнить то, что вы хотите, вам нужно перебрать этот массив:

getMembers(): Observable<Member[]> { 
    var one = this.http.get(this.memberUrl) 
        .map(this.extractData) 
        .map(memberArray => { 
         return memberArray.filter(x=> x.type === "member") 
        }) 
    return one 
    } 
+0

спасибо, что мельницы, он работал как шарм. – Tunity

Смежные вопросы