我有一個攔截器,我正在配置以加載ajax微調器。
interface IInterceptorScope extends angular.IRootScopeService {
loading: number;
}
export class Interceptor {
public static Factory($q: angular.IQService, $rootScope : IInterceptorScope) {
return new Interceptor($q, $rootScope);
}
constructor(private $q: angular.IQService, private $rootScope: IInterceptorScope) {
this.$rootScope.loading = 0;
}
public response(response) {
console.log(response);
this.$rootScope.loading = 1;
return response || this.$q.when(response);
}
public responseError(rejection) {
console.log(rejection.status);
if (rejection.status === 401) {
}
return this.$q.reject(rejection);
}
}
我收到此錯誤:
$q
也沒有定義。我不知道爲什麼。任何人都可以幫忙嗎?
編輯:這是我如何加入我的config()
塊內的攔截器,再減去其他參數,它看起來像這樣:
.config($httpProvider : angular.IHttpProvider) => {
$httpProvider.interceptors.push(Interceptor.Factory);
}
和註冊工廠:
.factory('Interceptor', Interceptor)
作爲參考,我在這裏看第一個答案:
AngularJS global $http state ajax loader
$rootScope
在這裏有加載屬性,但這是在純JavaScript中,所以我不知道它是否與TypeScript的方式在這裏。
你沒有收到responseError裏面的錯誤,因爲可能你的代碼沒有打到該塊 – gaurav5430
請說明你如何註冊攔截器? – miensol
嗨,我剛剛重新編輯了我的答案。 – Thomas