【发布时间】:2018-11-01 15:59:54
【问题描述】:
我正在将 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>>();
})
);
}
}
src/app/shared/http-error-interceptor.ts(26,27):错误 TS2339: “typeof Observable”类型上不存在属性“empty”。
empty 现在是一个常量,但不接受类型,所以这也不起作用。在the upgrade notes 中也找不到太多内容
编辑
虽然有趣的是这样编译:
return Observable.of<HttpEvent<any>>();
【问题讨论】:
-
尝试
return empty();有效吗?empty现在是常量 (EMPTY) 和函数 (empty(scheduler?: SchedulerLike))。 -
恭喜你的绅士化头像的名字。简森巴顿万岁 \o/
-
还有孙悟空!!
-
@statosdotcom 尝试过,但
intercept输入安全Observable<HttpEvent<any>> -
这个怎么样:
return of<HttpEvent<any>>();
标签: angular typescript rxjs angular6 rxjs6