我刚刚将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';
使用较新版本时。