Привет, я учусь использовать ngrx.
Я использую эффекты для получения данных.
loadItems$ = createEffect(() =>
this.actions$.pipe(
ofType(ItemActions.loadItems),
mergeMap(action =>
this.defaultService.getItems().pipe(
map(Items => ItemActions.loadItemsSuccess({ Items })),
catchError(error =>
of(ItemActions.loadItemsFailure({ error }))
)
)
)
)
)
Может ли кто-нибудь подсказать мне, как применить список фильтров к товарам, полученным в магазине?
1
mx_code
16 Апр 2020 в 00:20
1 ответ
Лучший ответ
Чтобы фильтровать данные в эффекте или в селекторе, вы должны использовать обычные инструменты JavaScript, такие как Array.filter
, Array.reduce
и т. Д.
Например, если вы хотите отфильтровать их в эффекте.
loadItems$ = createEffect(() =>
this.actions$.pipe(
ofType(ItemActions.loadItems),
mergeMap(action =>
this.defaultService.getItems().pipe(
map(Items => ItemActions.loadItemsSuccess({
Items: Items.filter(item => item.active) })), // Array.filter
catchError(error =>
of(ItemActions.loadItemsFailure({ error }))
)
)
)
)
)
Или в селекторе вы можете использовать оператор map
.
this.store.select(selectItems).pipe(
map(items => items.filter(item => item.active)), // Array.filter
);
1
satanTime
20 Май 2020 в 18:21
Похожие вопросы
Новые вопросы
angular
Вопросы по Angular (не путать с AngularJS), веб-фреймворку от Google. Используйте этот тег для угловых вопросов, которые не относятся к конкретной версии. Для более старой веб-платформы AngularJS (1.x) используйте тег angularjs.