Angular 2 http catch可观察到的问题

时间:2016-10-01 10:06:33

标签: angular angular2-services angular2-http

我有一个自定义的http服务,它会覆盖默认的angular 2 http服务。此服务设置自定义默认选项并在请求启动时设置加载程序,并在请求完成时隐藏加载程序。

如果从服务器收到Unauthorized错误(401,403),我还想添加将用户重定向到登录页面的功能。例如下面是我的http方法

get(url: string, options?: RequestOptionsArgs): Observable<any> {
        this.setLoadingStatus();
        options = this.prepareOptions(options);
        let that = this;
        return super.get(url, options)
            .map(res => {
                this.clearLoadingStatus();
                return res.json();
            })
            .catch(function (err) {
                //redirects user to login and display alert
                that._gs.alertUnauthorized();
                return Observable.empty();
            });
    }

但是当在浏览器中测试它,即在未经授权的请求的情况下发出返回401的受保护页面的请求时,它会重定向到登录页面但是控制台显示在下面错误:

GET http://localhost:49547/api/protected/ 401 (Unauthorized)
EXCEPTION: Observable_1.Observable.empty is not a function
ORIGINAL STACKTRACE:
TypeError: Observable_1.Observable.empty is not a function

有人可以指导吗?

1 个答案:

答案 0 :(得分:2)

您需要导入empty功能:

import 'rxjs/add/observable/empty'