Angular 8
以下代码在键入1秒后即可很好地触发:
模板:
<input [formControl]="nameControl">
TS
nameControl = new FormControl();
nameControlSub: Subscription;
...
this.nameControlSub = this.nameControl.valueChanges
.pipe(debounceTime(1000), distinctUntilChanged())
.subscribe(newValue => this.filterResults(newValue) );
除上述内容外,我还想在键入时立即触发一个事件。本质上,我的目标是即使用户尚未触发反跳操作,也要在用户开始输入时立即设置this.loading = true
。然后,一旦完成反跳功能,我将设置this.loading = false
。
有什么建议吗?
答案 0 :(得分:1)
您可以使用tap
运算符。
this.nameControlSub = this.nameControl.valueChanges
.pipe(
tap(()=> this.isLoading = true),
debounceTime(1000),
distinctUntilChanged()
)
.subscribe(newValue => {
this.isLoading = false;
this.filterResults(newValue)
});