我是新手。拦截器已创建为服务。工作正常。现在添加错误捕获器。当我添加“ .do”部分时,它将无法正常工作。如果我删除了这部分工作正常。同样,也找不到为什么它不起作用的原因。在下面显示我的代码。请告诉我是否做错了什么。 提前致谢。
import { Injectable } from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/throw';
@Injectable()
export class AuthService implements HttpInterceptor {
constructor() { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (request.url.indexOf("UserLogin") > 0 || request.url.indexOf("GetLogo") > 0) {
return next.handle(request);
}
var cookie = document.cookie;
var token = cookie.split("authToken=")[1].split(";")[0];
request = request.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
return next.handle(request).do((event: HttpEvent<any>) => {}, (err: any) => {
if (err instanceof HttpErrorResponse) {
// do error handling here
}
});
}
}
答案 0 :(得分:1)
我想您可以在rxJS 5.5(与Angular 5兼容)上进行传输,请尝试将行更改为
return next.handle(request).pipe(do((event: HttpEvent<any>) => {}, (err: any) => {
console.log(err)
}));
让我知道你的生活。