Angularjs中的TypeScript拦截器不起作用

时间:2015-03-05 03:16:27

标签: angularjs typescript interceptor

我的拦截器无效(未触发)。我的任何错误?对不起,我还是个菜鸟:(

module myApp {
export class HttpConfigurator {
    public configure(httpProvider: ng.IHttpProvider) {
        console.log(httpProvider);
        console.log(httpProvider.interceptors[0]);

        httpProvider.interceptors.push([
            '$location',
            '$q',
            '$log',
            ($location: ng.ILocationService, $q: ng.IQService, $log: ng.ILogService) => {
                return promise => promise.then(
                    response => { console.log(response.status); return response; },
                    response => {
                        console.log(response.status);
                        if (response.status >= 500) {

                        }

                        if (response.status === 401 || response.status === 403) {
                            $location.path('/403');
                            return $q.reject(response);
                        } else {
                            return $q.reject(response);
                        }
                    });
            }]);
    }
}

}

注意:以前这是在javascript中工作。当我将其转换为打字稿时,问题就开始了。

1 个答案:

答案 0 :(得分:0)

我没有在任何地方看到promise。请注意,由于拦截器的简单性,我只使用函数+工厂:

app.factory('appHttpInterceptor', [function () {
    return {
        response: function (response) {
            if (typeof (MiniProfiler) != 'undefined') {
                var ids = response.headers()['x-miniprofiler-ids'];
                if (ids) {
                    MiniProfiler.fetchResultsExposed($.parseJSON(ids));
                }
            }

            return response;
        }
    };
}]);

不要使用class