form-submit - 提交并重置表单后,在输入元素中设置焦点

标签 form-submit angular2-forms setfocus

我正在使用带有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();
    }
  }
}

和我的模板代码:
<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>

最佳答案

在您的 View 上,为要关注的输入字段设置引用(您已经使用#firstName进行了引用)。

然后,在您的组件代码上,使用@ViewChild创建对其的访问:
@ViewChild('firstName') firstNameRef: ElementRef;
最后,在重置表单之后:
this.firstNameRef.nativeElement.focus()
ps .: 我希望FormControl api公开一个focus方法,但是this issue on gitHub建议它可能永远不会发生。

关于form-submit - 提交并重置表单后,在输入元素中设置焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43101154/

相关文章:

javascript - 表单 javascript 提交事件

jQuery 模式对话框未提交我的表单

angular - 通过服务可观察到的失败在组件之间进行通信

Java - JPanel 和 KeyListener 问题

setfocus - 佳能EDSDK设置对焦点

jquery - 将焦点设置在按钮上不起作用

jQuery - 提交带有 anchor 的表单

php - 使用 $_REQUEST[] 有什么问题?

angular - 从 Angular 2 上的查询参数中预填充输入文本框

jquery - 如何在 Angular 2 中使用日期选择器?