Angular 2 http捕获可观察问题
我有一个自定义http服务,它覆盖默认的角度2 http服务。此服务设置自定义默认选项,并在请求开始时设置加载器,并在请求完成时隐藏加载器。Angular 2 http捕获可观察问题
我也想添加,如果从服务器收到未授权错误(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();
});
}
但是,当测试在IE浏览器做了保护的页面的请求,在未经授权的请求的情况下返回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
任何人都可以指导吗?
您需要导入empty
功能:
import 'rxjs/add/observable/empty'
谢谢,这很有帮助。请指导一下,如果在这种情况下使用Observable.empty()是否合适,还有其他更好的选择吗? –
我仍然看到在控制台“zone.js:1274 GET http:// localhost:49547/proteccted/401(未授权)”中打印的下面的错误行,它可以吗?还是需要处理的例外情况? –
我认为这只是一个调试的事情。返回Observable.empty()可以抑制错误,所以如果这就是你想要的,那你就是金。 – j2L4e
尝试'super.get()图((RES)=> {},(ERR)=> {});'的语法? –