我试图在发生错误时从数据服务返回自定义错误。
public getRoles(): Observable<Array<Role> | CustomError> {
return this.http.get(this.urlService.getRoles)
.pipe(
map((res: any) => {
let roles = new Array<Role>();
res.Result.forEach(item => {
roles.push(new Role().fromItem(item));
});
return roles;
}
),
catchError(err => {
let customError = new CustomError();
customError.errorNumber = err.status;
customError.message = err.message;
return throwError(customError);
})
);
}
上面的代码实际上按照我的预期运行,但文本编辑器指示以下错误:
(TS)输入'Observable <{} | Role []>'不能赋值为'ObservableRole [] | CustomError>”。
输入“{} |角色[]'不能分配给'Role [] | CustomError”。
类型“{}”不能分配给“Role [] |”类型CustomError”。
类型“{}”不能分配给“CustomError”类型。
类型“{}”中缺少属性“errorNumber”
谁能告诉我我需要做些什么来解决这个问题?
事实证明,这不是代码中我遇到catchError问题的唯一地方。我有一个简单的拦截器,它会将http错误记录到控制台。 (我正在试验如何使用拦截器)。
public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log(`ErrorInterceptor - ${req.url}`);
return next.handle(req)
.pipe(catchError(err => {
console.log(err);
return throwError(err);
}));
}
有了这段代码,我得到了一组非常相似的消息。我正确使用了catchError和throwError吗?
我的是,你需要导入throwError类吗? :
import {Observable, throwError} from 'rxjs';