我刚刚将Ionic应用程序中的angular从版本4更新到了5。我有一些Search FormControl输入,允许用户通过ajax请求搜索数据库。
我使用了debounceTime()方法来延迟ajax搜索请求,但是在 Angular 升级之后,该方法不再可用。我删除了此方法调用,但现在在android上每按一次用户键,都会发出一个新请求。

还有其他方法可以实现此延迟吗?

this.searchControl.valueChanges
        .debounceTime(2000)
        .subscribe(search => this.getCities(search));

最佳答案

就像您在 Ionic docs 中看到的一样:



因此,基本上,您需要稍微更改import语句以使用深度导入
import { debounceTime } from 'rxjs/operators/debounceTime';
然后在debounceTime方法内部使用pipe(...):

this.input.valueChanges
    .pipe(
      debounceTime(500),
      // you can chain more operators if needed ...
      // ...
    )
    .subscribe(res => console.log(res))

您仍然可以使用旧方法(因为这不是一个重大更改),但是使用 lettable运算符将导致更小,更快的应用程序

更新

就像他的评论中提到的@lifetimes(并且您可以看到 here )一样,此导入
import { switch } from 'rxjs/operators/switchMap';

应该替换为
import { switchMap } from 'rxjs/operators/switchMap';

使用较新版本时。

10-08 17:58