因此,我有一个简单的从策略中注销客户端的过程。
我的注销操作应:
基于从列表中选择的客户端,根据客户端的ID获取所有客户端数据
从点1获取数据后,显示包含所有这些数据的确认对话框
在对话框中,您可以添加/删除一些以前选择的客户端
确认对话框后发送修改的客户列表以注销过程
我的动作开始于:
export class DeregisterClients implements Action {
readonly type = ActionTypes.DEREGISTER_CLIENTS;
constructor(public policyNumber: string, public ids: number[]) {
}
}
所以问题是效果如何?下面只有伪代码和map运算符在各处使用,因为我不知道应该使用哪个运算符
@Effect({dispatch: false})
deregister$ = this.actions$.pipe(
ofType<DeregisterClients>(DEREGISTER_CLIENTS),
// 1 fetch all data
map(event => {
return event.ids.map((id) => {
return this.api.fetchClient(event.policyNumber, id);
});
}),
// 2 collect all data from point 1 and show this data in dialog
map((insureds) => {
return this.dialogService.open(DeregisterDialog, data: {policyNumber: 'TODO', clients}}) //here i lost policy number :(
.afterClosed();
}),
// 3 check result after dialog closed
map((result: DeregisterDialogResult) => {
if (!result.success) {
return [];
}
return result.clients.map(client => this.api.deregister("TODO", client));//here i lost policy number :(
}),
//4 concurrently deregister them
//todo
);
也许这太复杂了?但是从业务角度来看,这是一个动作。