Http服务重定向错误

时间:2016-11-15 19:45:10

标签: angular typescript angular2-routing angular2-services

有没有办法用Angular 2创建一个http拦截器,你可以根据错误重定向到某些路由吗?例如,当服务用404响应时转到/ not-found路由,当用401/403响应时转到/未授权路由。

我试图将路由器注入我的服务并在错误处理方法上使用它,但它只是抛出了这个错误

Unhandled Promise rejection: Provider parse errors: Cannot instantiate cyclic dependency!

我以前能够像AngularJS那样做:

function authInterceptor ($q, $injector) {
  return {
    request: function (request) {
      return request;
    },
    requestError: function (request) {
      return $q.reject(request);
    },
    response: function (response) {
      return response;
    },
    responseError: function (response) {
      if (response.status === 401 || response.status === 403) {
        $injector.get('$state').go('unauthorised');
      } else if (response.status === 404) {
        $injector.get('$state').go('notFound');
      }

      return $q.reject(response);
    }
  };
}

1 个答案:

答案 0 :(得分:1)

您可以扩展HTTP模块并拦截请求和响应。 我写了一个gist来演示它。