我是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 ...
class LoadTradeSuccess {
constructor(readonly id: any, readonly trade: any){}
}