在Angular 6(反应形式)的文本框中键入内容时如何读取文本框的值

时间:2019-03-01 20:43:00

标签: angular6 angular-reactive-forms

我在Angular 6中有一个反应形式的文本框,我想在文本框内输入内容时立即读取文本框字段的值(而不是在模糊显示该文本框时)。

ValueChanges事件仅在我退出此文本框时发生。

我的目的是在文本框内输入内容时获取文本框的值。

component.html

<kendo-autocomplete formControlName="requestedFor" class="form-control" placeholder="Type User" style="height:3.25rem" [data]="this.userNames" 
                        (keydown)="this.searchUsersDetails()"  required >
</kendo-autocomplete>

component.ts

searchUsersDetails() {
    console.log('Onkey up');
    console.log('control value::: ' + this.requestForm.controls.requestedFor.value);
    this.requestForm.controls.requestedFor.valueChanges.subscribe(
    term => {
      if (term !== '') {
          console.log('term::' + term);
        this.dataService.searchUsers(term).subscribe(
          data => {
              this.userDetails = data;
              const userNamesTmp = new Array(this.userDetails.length);
              this.userDetails.forEach(function (userDetailTmp) {
                  userNamesTmp.push(userDetailTmp.name);
              });
              this.userNames = userNamesTmp;
          });
      }
    });
}

1 个答案:

答案 0 :(得分:0)

(keydown)="this.searchUsersDetails()"

searchUsersDetails() {
   ...
   this.requestForm.controls.requestedFor.valueChanges.subscribe(...)

只是...不。

通过valueChangesObservable<any>方法)订阅OnInit ngOnInit

this.requestForm.controls.requestedFor
                         .valueChanges
                         .pipe(startWith(undefined))
                         .subscribe(v => ...)