Привет, я учусь использовать 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