【发布时间】:2018-03-17 19:19:19
【问题描述】:
正如标题所说:有没有办法告诉路由器取消当前的导航?
情况如下:
- 路由守卫调度一个动作。
- 效果基于该操作执行异步调用。
- 完成后,异步调用将对属性调度存储更新操作。
- 守卫订阅了该属性的选择器(例如“property$”)
- 一旦该属性$ 更新,守卫将决定是否允许导航。
此方法仅在效果的异步操作请求的资源正确返回时有效(HTTP 200)。但万一操作失败(比如 HTTP 404),问题就出在这里:
- 守卫不会批准也不会拒绝导航。它处于待处理状态,并且在守卫返回 true 或 false 之前不会发生其他导航请求。
有没有办法实现调用,比如天真的说:this._router.cancelAllNavigationRequests()?
【问题讨论】:
-
嘿,当你的 HTTP 调用的响应不是 200 时,你不能改变你的警戒以重定向到默认的“错误页面”吗?
-
您可以指示状态失败或让守卫监听效果将发出的动作。
标签: angular ngrx angular-router ngrx-effects angular-guards