【发布时间】:2017-03-30 20:01:14
【问题描述】:
我正在从我的组件中分派一个 ADD_SOURCE 操作,当它成功分派另一个 ADD_SOURCE_SUCCESS:
this.store$
.select(fromRoot.getUserState)
.filter(user => user.id != null && user.logged)
.takeUntil(this.componentDestroyed$)
.do(user => this.store$.dispatch({type: 'ADD_SOURCE', payload: user.username}))
.subscribe();
这是根据网络调用返回ADD_SOURCE_SUCCESS的效果:
@Effect({ dispatch: true })
addSource$: Observable<Action> = this.actions$
.ofType('ADD_SOURCE')
.switchMap(
(action: Action) =>
this.userService.addCard(action.payload.username, action.payload.token)
.map((card: CardDTO) => {
return <Action>{
type: 'ADD_SOURCE_SUCCESS',
payload: <ICard>{ ... }
};
})
.catch(_ => {
return Observable.of(<Action>{ type: 'ADD_SOURCE_FAILED', payload: { }});
}));
那么,一个新的ADD_SOURCE_SUCCESS 在我的reducer 上被调度:
private static saveSourceSuccess(sourcesRdx, type, payload) {
return <ISourceRedux>{
ids: [ ...sourcesRdx.ids, payload.id ],
entities: Object.assign({}, sourcesRdx.entities, {[payload.id]: payload}),
selectedIds: sourcesRdx.selectedIds,
editingSource: null
};
}
尽管如此,我不太明白如何在我的组件上说操作已成功并做一件事或另一件事......
有什么想法吗?
【问题讨论】:
标签: ngrx