ui-路由器 "The transition was ignored" 在状态转换期间

ui-router "The transition was ignored" during state transition

我想为我的应用程序的某些状态设置通用错误处理程序,例如 main.*,如果任何状态 resolves 失败,我想将用户重定向到通用错误页面。

我设置了以下错误处理程序:

  $transitions.onError({to: "main.*"}, function (trans) {                   
       $state.go("transition-error")
  });

但是如果我点击 link 说 <a ui-sref="main.profile"> profile </a>,并且转换成功,然后我第二次点击那个 link,我的错误处理程序会执行并出现错误消息:"The transition was ignored",出现此类错误时如何防止执行错误处理程序?为什么我会收到此错误消息?

可以使用 trans.error() 从转换中检索错误详细信息。该值是一个 Rejection 对象。在您的 onError 处理程序中,检查拒绝的类型。例如,您可以选择仅在拒绝类型为 "ERROR":

时重定向
$transitions.onError({to: "main.*"}, function (trans) {                   
   var rejection = trans.error();
   if (rejection.type === RejectType.ERROR) { // === 6
     $state.go("transition-error");
   }
});

https://ui-router.github.io/ng1/docs/latest/classes/transition.rejection.html#type

https://ui-router.github.io/ng1/docs/latest/enums/transition.rejecttype.html#error