使用NGRX / @Effects处理表单状态

时间:2017-03-16 10:35:09

标签: javascript angular ngrx ngrx-effects

我有一张表格,在提交时我发出一个由效果捕获的动作。然后效果进行http调用。我想知道如果完成/失败这个动作的后面我会做以下事情:

  • 在操作完成后显示成功消息
  • 重置下次使用表单时准备好的所有字段
  • 显示操作失败后的错误

我知道我可以重新调度一个动作,用几个标志successerror等填充商店。但是,重置表单可能是通过调用一个函数来完成的。订阅商店并在孩子中调用相关的reset功能是否可以接受?这几乎就像我希望组件能够像效果一样听取动作。

1 个答案:

答案 0 :(得分:2)

如果您的效果休息不影响商店,但只应显示通知 - 那么我会说两种方式:

1)按照自己的建议在组件中注入Actions

class SomeComponent {
    constructor(actions: Actions) {
        actions.ofType(SOME_EVENT)
            .do(myThing)
            .takeUntil(componentIsDestroyed)
            .subscribe();
    }
}

2)或者根本不采用效果和行动的方式,只需调用简单的服务方法:

class SomeComponent {
    constructor(myService: CoolService) {
    }

    onClick(): void {
        mySevice.makeRequest()
            .do(myThing)
            .subscribe();
    }
}