Проблема NGRX/store sideEffect с startWith

У меня есть побочный эффект, который выглядит так:

@Effect()
loadAll$: Observable<Action> = this.actions$
  .ofType(reservationsActions.LOAD_ALL)
  .startWith(new reservationsActions.LoadAll())
  .switchMap(() =>
    this.reservationsService.index() 
   .map((reservations: Reservation[]) => new reservationsActions.LoadAllSuccess(reservations))
);

Я взял это из этого репозитория пример ngrx

и я получаю следующую ошибку:

Свойство «startWith» не существует для типа «Действия».


person Mel Pacheco    schedule 18.08.2017    source источник
comment
чего именно вы пытаетесь добиться этим эффектом? Даже если вы вернете new reservationsActions.LoadAll(), вы не используете этот результат в своем switchMap. Если бы вы могли указать намерение вашего кода.   -  person Meeker    schedule 18.08.2017
comment
Я считаю, что это изначально загружает все «резервирования». Я использую этот код из примера. это отправляется в компоненте ngOnInint this.store.dispatch(new reservationsActions.LoadAll()); затем этот побочный эффект загружает все резервирования из службы, а затем отправляет reservationsActions.LoadAllSuccess(reservations)). Меня просто смущает ошибка startWith не существует.   -  person Mel Pacheco    schedule 18.08.2017
comment
какой пример вы имеете в виду? приведенная выше ссылка не содержит этого примера (или каких-либо эффектов?). Однако я хотел бы убедиться, что вы также используете ngrx 4.0.   -  person Meeker    schedule 18.08.2017


Ответы (2)


При обновлении до rxjs 6 вам необходимо настроить синтаксис для использования оператора канала.

Исходный

  @Effect()
  loadAll$: Observable<Action> = this.actions$
   .ofType(reservationsActions.LOAD_ALL)
   .startWith(new reservationsActions.LoadAll())
   .switchMap(() =>
     this.reservationsService.index() 
    .map((reservations: Reservation[]) => new 
         reservationsActions.LoadAllSuccess(reservations))
   );

Новое

  @Effect()
  loadAll$: Observable<Action> = this.actions$.pipe(
   ofType(reservationsActions.LOAD_ALL),
   startWith(new reservationsActions.LoadAll()),
  switchMap(() =>
    this.reservationsService.index() 
   .map((reservations: Reservation[]) => new 
reservationsActions.LoadAllSuccess(reservations))
   ));
person Eric S    schedule 23.04.2018

только что разобрался, этого не хватало.

импортировать 'rxjs/добавить/оператор/начать с'

person Mel Pacheco    schedule 18.08.2017