我有循环依赖的问题.我构建了一个$http拦截器来处理所有$http错误,并使用模态(Angular UI-Bootstrap)提醒用户.
依赖链看起来像这样:
$http <- $modal <- ErrorHandlerService <- HTTPErrorInterceptorService <- $http
我得到的错误是:
Uncaught Error: [$injector:cdep] Circular dependency found: $http <- $modal <- ErrorHandlerService <- HTTPErrorInterceptorService <- $http <- $templateFactory <- $view <- $state
我已经读过 ,解决这些类型问题的诀窍是使用$injector.我已经尝试使用$injector注射$modal,我已经尝试使用$injector注射ErrorHandlerService但我仍然得到了Circular dependency error.
有没有人有任何想法如何解决这个问题?
谢谢!
小智 7
提到的问题中的技巧的重点是,您在拦截器的运行时期间解决了依赖关系,而不是在工厂中.$modal
这会奏效
angular.module('app')
.factory('httpAuthInterceptor', function($q, $injector) {
let $modal;
return {
responseError: (rejection) => {
if (rejection.status === 401) {
$modal = $modal || $injector.get('$modal');
$modal.open({
template: 'not logged in'
});
}
return $q.reject(rejection);
}
};
})
;
Run Code Online (Sandbox Code Playgroud)
这不起作用
angular.module('app')
.factory('httpAuthInterceptor', function($q, $injector) {
let $modal = $injector.get('$modal');
return {
responseError: (rejection) => {
...
}
};
})
;
Run Code Online (Sandbox Code Playgroud)