分派操作后重定向到页面(ngredux)

时间:2018-11-01 13:31:29

标签: angular ngredux

我有一个角度为6 + ngredux的项目,我想为下一种情况提供建议:

  • 我有一个概述详细信息页面(只读信息),其中填充了来自应用程序状态的数据。在此页面中,我有一些按钮可以打开其他页面(这里有一些表单-用户可以在这些表单中编辑某些字段)。
  • 当用户保存数据时,他应该返回到概述详细信息页面。 由于我们正在使用ngredux并从应用程序状态更新值,因此我们使用类似

    的组件在组件中进行处理
    onSubmit(){
    this.actionsCreator.save(this.model);
    const route = 'details/' + this.objId;
    this.router.navigate([route]);
    } 
    

我们遇到的问题是,如果“保存”方法在API中花费2-3秒,则首先将用户重定向,然后在应用状态下保存并更新模型(这是正常的-我们以错误的方式进行重定向)。

我们使用自定义中间件来调度操作。

return next => action => {
const {type, callApi, shouldCallApi, success = function () { }} = action;
if (!shouldCallApi) { return next(action);}
if (typeof callApi !== 'function') {throw new Error('Expected callApi to be a function');}
if (typeof shouldCallApi !== 'function') {throw new Error('Expected shouldCallApi to be a function');}
if (!shouldCallApi(getState())) {return;}

return callApi().subscribe(response => {
    success(response);
    return dispatch({type: type,payload: response || null});
    });
};

因此,我想就如何处理这种情况提出建议。我们是否应该将路由器注入actionsCreator服务(这是正确的方法)并在调度时进行重定向(如果成功)?还是来自减速器?还是仅来自组件?

0 个答案:

没有答案