RXJS 6:HttpInterceptor的新版本

jen*_*ent 11 rxjs typescript angular angular6 rxjs6

我正在添加rxjs_compat到我的项目中以转移到v6库.

但是,现有HttpInterceptor的全局错误处理不再编译.不知道该去哪里.尝试各种各样.尝试所有的类型不匹配.

import { Injectable } from "@angular/core";
import {
  HttpEvent,
  HttpInterceptor,
  HttpHandler,
  HttpRequest,
  HttpResponse,
  HttpErrorResponse
} from "@angular/common/http";
import { Observable, of, empty } from "rxjs";
import { ToastrService } from "ngx-toastr";
import { environment } from "../../environments/environment";
import { catchError, map } from "rxjs/operators";

@Injectable()
export class HttpErrorInterceptor implements HttpInterceptor {
  constructor(private toastr: ToastrService) {}
  intercept(
    request: HttpRequest<any>,
    next: HttpHandler
  ): Observable<HttpEvent<any>> {
    return next.handle(request).pipe(
      catchError(err => of(HttpErrorResponse)),
      map(err => {
        let message: string;
         this.toastr.error(`${message}`, "Application Error");
        return Observable.empty<HttpEvent<any>>();
      })
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

src/app/shared/http-error-interceptor.ts(26,27):错误TS2339:类型'typeof Observable'上不存在属性'empty'.

empty现在是常量,但不接受类型,所以这也不起作用.在升级说明中也找不到多少

编辑

虽然有趣的是这编译:

return Observable.of<HttpEvent<any>>();
Run Code Online (Sandbox Code Playgroud)

Yak*_*ain 24

  1. import {EMPTY} from 'rxjs';

  2. 更换回Observable.empty()

    return EMPTY;