仅当用户输入密钥时可观察到的键入事件

时间:2019-07-25 05:22:56

标签: angular observable

我有以下代码

 Observable.fromEvent(this.inputref.nativeElement, 'keyup')
      .map((evt: any) => evt.target.value)
      .filter(res => {
        if (res.length > 1) {
          return true;
        } else {
        }
      }).debounceTime(1000)
      .distinctUntilChanged()
      .subscribe((text: string) => this.callmethod(text.trim()));
  }

上面的代码可以正常工作,但是问题是,当输入被类似的代码填充时也会被触发

this.inputref.nativeElement.value = "value"

或当绑定变量如下所示时

<input type="text" #inputref value="{{input_val}}" />

this.input_val = "text value"

如何使其仅在用户按下键时才触发,而不是在通过逻辑输入时触发。

谢谢

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

.html文件:

<input type="text" [formControl]="testControl" (input)="testMethod()">

在.ts文件中:

创建表单控件:

 testControl: FormControl = new FormControl('');

创建输入更改方法:

testMethod(){
    console.log('Test control Change event', this.testControl.value);
}

以下代码用于从代码端设置值:

this.testControl.setValue('Hello');