首页 > 解决方案 > 如何使用 mergeMap Angular 处理 Typeahead 搜索中的错误场景

问题描述

尝试使用 API 数据进行 Typeahead 搜索功能,如果我们提供有效数据,自动提示将正确出现,如果我们提供无效数据,则会给出错误消息,但如果我们再次输入有效数据,则 API 不会触发。所以我尝试修复并尝试下面的代码并帮助我如何处理无效数据的错误场景。

asyncData: string;
dataSource: Observable<any>;

this.dataSource = new Observable((observer) => {
    observer.next(this.asyncData)
}).mergeMap(() => {
    return this.http.get('/api/testAPI',{params: {param1: param1}});
});

标签: angulartypescriptrxjs

解决方案


new Observable()似乎没有必要。未显示 HTTP 请求的用法。无论如何,您需要的是某种形式的错误处理。您可以使用catchError运算符将​​错误转换为有效响应或不发出它们。

import { NEVER } from 'rxjs';
import { catchError } from 'rxjs/operators';

return this.http.get('/api/testAPI',{params: {param1: param1}}).pipe(
  catchError(() => NEVER)
);

NEVER这使用不会发出的RxJS常量。如果您希望处理订阅中的错误,请注意。这不会发射。


推荐阅读