Я работаю в приложении Angular 2.3, используя ngrx/store + шаблон сокращения.Неопределенные ошибки, сгенерированные с помощью коммутационной карты rxjs, используемой с фильтром (Angular 2 + ngrx/store + redux)
При вытягивании списка объектов из моего магазина (то есть большого изображения в верхней части страницы), я получаю неопределенную ошибку, которую пытаюсь устранить. Похоже, это может быть состояние гонки, когда функция разрешается до наблюдаемого. В любом случае, я все еще получаю результат, но при попытке понять ошибку:
error_handler.js:50 EXCEPTION: Cannot read property 'filter' of undefined
TypeError: Cannot read property 'filter' of undefined
Я имею в конструкторе (который имеет private _store: Store
)
objects$: Observable<Object[]> = _store.select(s => s.objects)
и моя функция:
selectObject(id: number): Observable<Object> {
return this.objects$
.switchMap(objects => objects.filter(object => object.id === id));
}
Это может быть ошибка TypeScript. Если 'objects' является массивом, попробуйте' objects $: Observable = _store.select (s => s.objects) ' –
Я добавил ответ об ошибке, упомянутой в вашем вопросе, но почему вы используете' оператор switchMap'? 'switchMap' объединяет наблюдаемый, но вы, кажется, возвращаете массив. – cartant
@cartant using switchMap, потому что я возвращаю наблюдаемый (содержащий массив) из магазина. Все новые данные поступают в магазин через редуктор, отправляющий полезную нагрузку (в этом случае массив объектов генерирует новое состояние), и из магазина я получаю наблюдаемое из последнего состояния. – Vijay