Доступ к данным о состоянии и полезной нагрузке вместе в эффекте ngrx - PullRequest
0 голосов
/ 08 февраля 2019

Я сохраняю в состоянии ngrx некоторый экземпляр виджета (сторонняя неугловая библиотека), и мне нужно обновить виджет новыми параметрами при помощи действий пользователя.Для этого случая я отправляю действие с новыми параметрами виджета в качестве полезной нагрузки.

Можно получить полезную нагрузку и данные состояния в одном месте действия без дополнительного частного поля?

@Effect({ dispatch: false })
public updateStatistics: Observable<webChatActions.Actions> = this._actions.pipe(
    ofType(Types.UPDATE_STATISTICS),
    map((action: demoActions.UpdateStatistics) => action.payload),
    tap((payload: StatisticsOptions) => console.log(payload)),
    withLatestFrom(this._store),
    map(([action, state]): DemoEffects => state['web-chat']),
    tap((state: WebChatState) => {
    // here I have my state, but also I need payload from tap above
    }),
    catchError((error: Error) => {
        this._logger.error('unable to update feedback widget', error);
        return of(new webChatActions.Service.ShowChatError(error));
    })
);

1 Ответ

0 голосов
/ 08 февраля 2019

Удалите map и у вас это есть.

@Effect({ dispatch: false })
public updateStatistics: Observable<webChatActions.Actions> = this._actions.pipe(
    ofType(Types.UPDATE_STATISTICS),
    map((action: demoActions.UpdateStatistics) => action.payload),
    tap((payload: StatisticsOptions) => console.log(payload)),
    withLatestFrom(this._store),
    map((): DemoEffects => state['web-chat']),
    tap(([action, state]) => {
      // action.payload 
      // tate['web-chat']
    }),
    catchError((error: Error) => {
        this._logger.error('unable to update feedback widget', error);
        return of(new webChatActions.Service.ShowChatError(error));
    })
);
...