2016-07-15 1 views
2

Я хотел бы отфильтровать наблюдаемое, но получаю неожиданные результаты.Angular2 Observable Filter

Я использую следующие операторы импорта:

import {Observable} from 'rxjs/Observable'; 
import 'rxjs/add/observable/of'; 

Этот пример ничего не возвращает:

Observable.of([0, 1, 2, 3, 4, 5]) 
.filter((x: any) => x % 2 === 0) 
.subscribe(data => console.log(data)); 

Этот пример возвращает весь набор результатов [0,1,2,3,4,5 ]:

Observable.of([0, 1, 2, 3, 4, 5]) 
.filter((x: number[], idx) => x[idx] % 2 === 0) 
.subscribe(data => console.log(data)); 

Кто-нибудь видит ошибки синтаксиса и/или что-то, что мне не хватает? Спасибо!

ответ

2

Вы должны использовать from если вы хотите, чтобы передать значения в Iterable (массив в данном случае)

import 'rxjs/add/observable/from'; 

Observable.from([0, 1, 2, 3, 4, 5]) 
.filter((x: any) => x % 2 === 0) 
.subscribe(data => console.log(data)); 

Или, если вы хотите придерживаться of значений проходных в качестве аргументов

Observable.of(0, 1, 2, 3, 4, 5) 
.filter((x: any) => x % 2 === 0) 
.subscribe(data => console.log(data));