HttpInterceptor检测到401个响应

时间:2018-11-12 14:35:14

标签: angular typescript rxjs

在服务器发出401响应的情况下,我有一个工作代码调用了logout()方法。当我将Angular从5.2升级到7.0.3时,它不再起作用。我认为必须是具有修改后的HttpInterceptor接口或许多rxjs重大更改的东西。现在看起来像这样,并在代码下面抛出错误。

export class UnauthInterceptor implements HttpInterceptor {

  private session: SessionProvider;
  constructor(private injector:Injector) {}

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
      this.session = this.injector.get(SessionProvider);
      return next.handle(request).pipe(catchError(err => {
            if (err.status === 401) {
                // auto logout if 401 response returned from api
                this.session.logout();
            }
        })
      );
  }}

tsc引发以下错误:

  

src / app / interceptors / unauth.interceptor.ts:19:51-错误TS2345:   类型'(err:any)=> void'的参数不能分配给参数   类型'(err:any,catch:Observable>)=>   ObservableInput <{}>'。
  无法将类型“ void”分配给类型“ ObservableInput <{}>”。

     
    

19返回next.handle(request).pipe(catchError(err => {

  

1 个答案:

答案 0 :(得分:2)

您好,您必须返回带有catchError的可观察对象,如:

return throwError(error)