Как объединить вызовы эффектов ngrx в один поток? - PullRequest
0 голосов
/ 25 апреля 2020

Чего я хочу добиться, так это того, что я хочу делать новый запрос каждые 1 с эффектом (бэкэнд отправит обратно массив из 10 элементов). Я хочу объединить эти элементы в одну коллекцию сущностей, а затем l * 1020. * через него в шаблоне асинхронно.

Ниже приведены мои эффекты. Используется для извлечения данных из серверной части.

//effects.ts

  loadCourierItems$ = createEffect(() =>
    this.actions$.pipe(
      ofType(CourierItemActions.loadCourierItems),
      mergeMap(action =>
        this.defaultService.getCourierItems(
        ).pipe(
          map(CourierItems => CourierItemActions.loadCourierItemsSuccess({ CourierItems })),
          catchError(error =>
            of(CourierItemActions.loadCourierItemsFailure({ error }))
          )
        )
      )
    )
  )

Ниже приводится мой селектор

//selector.ts

  export const selectCourierItemState = createFeatureSelector<CourierItemState>(
  CourierItemsFeatureKey
);

export const selectCourierItems = createSelector(selectCourierItemState, selectAll);

Это компонент, в который я отправляю действие для получения данных в первый раз:

//app.component.ts

  constructor(private store: Store<CourierItemsState>) {
    this.store.dispatch(loadCourierItems())
  }

ngOnInit() {
this.courierItems$ = this.store.pipe(select(selectCourierItems))
}
//template.html


<div *ngFor="let item of courierItems$ | async as courier>
<p>{{courier.name}}</p>
<p>{{courier.loc_cur}}</p>

etc...
</div>

...

Как я могу это сделать?

Чего я хочу добиться, так это того, что я хочу делать новый запрос каждые 1 с эффектом (бэкэнд отправит обратно массив из 10 items) Я хочу объединить эти элементы в одну коллекцию сущностей и затем асинхронно пропустить через нее oop в шаблоне.

Имп

1 Ответ

0 голосов
/ 25 апреля 2020

Я нашел ответ. Просто используйте addMany в редукторе.

on(CourierItemActions.loadCourierItemsSuccess,
    (state, action) => adapter.addMany(action.courierItems, state)
  ),

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...