angular5中HttpClient拦截器catchError调用函数的this指向谁?
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = AuthStorage.getItem('mano');
const token_snap = AuthStorage.getItem('mano_snap');
req = req.clone({
setHeaders: {
'APIKEY': '33726880C9CE84E67A5C27BD4A2CE91AD2',
'token': token ? token : token_snap || 'mano'
}
});
return next.handle(req).pipe(
catchError(this.handleError)
);
}
handleError(error: HttpErrorResponse) {
console.log(this); // 此时的this指向
const code = error['status'];
if (code === 401 || code === 417) {
Auth.loginOut();
}
const err = {url: error['url'], status: error['status'], msg: error['error'].msg};
return new ErrorObservable(err);
}
在handleError方法中怎么调用其它方法呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
指向调用者,非此 class。
如果要指向此 class ,请使用
箭头函数
。你在intercept最后不是调用了this.handleError么,这个this和handleError方法里面的this就是同一个吧,都是指向当前class对象。你在class里面定义的方法都可以直接用this调用。
或者注入服务以后通过this.xxxService.xxx()调用
你这么写是指向调用者,如果要绑定this,请使用arrow function或者bind。