ngrx-将触发操作的有效负载传递到下一个操作

问题描述 投票:0回答:1

我是ngrx和Angular开发的新手。我的商店里有一些交易。一个效果侦听LoadTradeRequest,后者触发一个http请求以获取Observable并触发LoadTradeSuccess或LoadTradeFailure。

@Effect()
loadTrade$: Observable<Action> = this.actions$.pipe(
ofType(ActionTypes.LoadTradeRequest),
mergeMap((action: actions.LoadTradeRequest) =>
  this.remoteApiService.loadTrade(action.payload).pipe(
    map(trade => new actions.LoadTradeSuccess(trade)),
    catchError(err => of(new actions.LoadTradeFailure(err)))
  )
 )
);

LoadTradeSuccess操作的reducer函数将已加载的Trade添加到商店。

  case ActionTypes.LoadTradeSuccess: {
  return { ...state, trades: [...state.trades, action.payload] };
}

我的国家声明是>

trades: Trade[];

到目前为止一切正常。现在,我需要将State更改为以唯一标识符为关键字的交易集合,该标识符在LoadTradeRequestAction的操作有效负载中给出]

期望状态

trades: DictionaryItem<string, Trade>[];

DictionaryItem在哪里

export interface DictionaryItem<K, V> { 0: K; 1: V; }

我如何将触发效果的操作的属性传递给它与http响应一起触发的操作。下面的块不起作用,仅尝试说明我想要实现的目标。

@Effect()
loadTrade$: Observable<Action> = this.actions$.pipe(
ofType(ActionTypes.LoadTradeRequest),
mergeMap((action: actions.LoadTradeRequest) =>
this.remoteApiService.loadTrade(action.payload).pipe(
map(trade => new actions.LoadTradeSuccess(**action.payload.UniqueIdentifier**, trade)),
catchError(err => of(new actions.LoadTradeFailure(err)))
 )
)

我是ngrx和Angular开发的新手。我的商店里有一些交易。一个效果侦听LoadTradeRequest,后者触发一个http请求以获取Observable并触发LoadTradeSuccess ...

angular typescript ngrx ngrx-effects
1个回答
0
投票
class LoadTradeSuccess { constructor(readonly id: any, readonly trade: any){} }
© www.soinside.com 2019 - 2024. All rights reserved.