在反跳之前和之后在输入文本上触发事件

时间:2019-09-06 19:40:30

标签: angular

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以使用tap运算符。

this.nameControlSub = this.nameControl.valueChanges
  .pipe(
    tap(()=> this.isLoading = true),
    debounceTime(1000), 
    distinctUntilChanged()
  )
  .subscribe(newValue => {
      this.isLoading = false;
      this.filterResults(newValue)
    });