在提交和重置表单后将焦点设置在input元素中

mig*_*dis 6 form-submit setfocus angular2-forms

我正在使用带有angular2的模板表单组件,我无法在提交表单后将焦点设置在我的firstName输入元素中.表单重新设置正常但无法设置焦点.

这是我的组件代码:

export class TemplateFormComponent {

  @ViewChild('f') form: any;

  onSubmit() {
    if (this.form.valid) {
      console.log("Form Submitted!");
      this.form.reset();
      this.form.controls.firstName.focus();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

和我的模板代码:

<form novalidate autocomplete="off" #f="ngForm" (ngSubmit)="onSubmit()">
<div class="form-group">
  <label>First Name</label>
  <input type="text"
         class="form-control"
         name="firstName"
         [(ngModel)]="model.firstName"
         required
         #firstName="ngModel">
</div>
</form>
Run Code Online (Sandbox Code Playgroud)

raf*_*ten 11

在您的视图上,设置对要关注的输入字段的引用(您已经拥有该引用#firstName).

然后,在组件代码上,使用@ViewChild创建对它的访问:

@ViewChild('firstName') firstNameRef: ElementRef;

最后,在重置表单后:

this.firstNameRef.nativeElement.focus()

ps.:我希望FormControl api公开一个焦点方法,但是gitHub上的这个问题表明它可能永远不会发生.