javascript - Angular 6 react 形式 : How to set focus on first invalid input

标签 javascript angular html rxjs angular-reactive-forms

在我的 Angular 6 应用中,我使用的是 Reactive Forms

我的目的是在提交时,我想在错误时将焦点设置在第一个无效输入上。

我的表单如下所示:

<form [formGroup]="addItemfForm " (ngSubmit)="onSubmitForm()">

  <div class="form-inline form-group">
    <label class="col-md-2 justify-content-start">
        Libellé du pef
        <span class="startRequired mr-1"> *</span>
    </label>
    <input type="text" maxlength="100" formControlName="libellePef" class="col-md-6 form-control" placeholder="saisie obligatoire" [ngClass]="{ 'is-invalid': submitted && formFiels.libellePef.errors }" />
    <div *ngIf="submitted && formFiels.libellePef.errors" class="col invalid-feedback">
      <div class="col text-left" *ngIf="formFiels.libellePef.errors.required">Libellé du pef est requis.</div>
    </div>
  </div>

  <div class="form-inline form-group">
    <label class="col-md-2 justify-content-start">
       Code Basicat
       <span class="startRequired mr-1"> *</span>
    </label>
    <input type="text" maxlength="100" formControlName="codeBasicat" class="col-md-3 form-control" placeholder="saisie obligatoire" [ngClass]="{ 'is-invalid': submitted && formFiels.codeBasicat.errors }" />
    <div *ngIf="submitted && formFiels.codeBasicat.errors" class="col invalid-feedback">
      <div class="text-left" *ngIf="formFiels.codeBasicat.errors.required">Code Basicat est requis.</div>
    </div>
  </div>

  <div class="form-inline form-group">
    <label class="col-md-2 justify-content-start">
        Nom de l'application
        <span class="startRequired mr-1"> *</span>
    </label>
    <input type="text" maxlength="100" formControlName="nomApplication" class="col-md-6 form-control" placeholder="saisie obligatoire" [ngClass]="{ 'is-invalid': submitted && formFiels.nomApplication.errors }" />
    <div *ngIf="submitted && formFiels.nomApplication.errors" class="col invalid-feedback">
      <div class="text-left" *ngIf="formFiels.nomApplication.errors.required">Nom de l'application est requis.
      </div>
    </div>
  </div>
</form>

在我的 TS 文件下,我的表单配置如下所示:

this.addItemfForm = this.formBuilder.group({
  libellePef: ['', Validators.required],
  codeBasicat: ['', Validators.required ],
  nomApplication: ['', Validators.required ],
  urlCible: [''],
  modeTransfert: [''],
});

我试过autofocus指令,但没有用

建议?

最佳答案

在您的提交中使用以下代码。

for (const key of Object.keys(this.addressForm.controls)) {
      if (this.addressForm.controls[key].invalid) {
        const invalidControl = this.el.nativeElement.querySelector('[formcontrolname="' + key + '"]');
        invalidControl.focus();
        break;
     }
}

this.addressForm 将是您的 FormGroup。

我们在这里甚至不需要指令。

关于javascript - Angular 6 react 形式 : How to set focus on first invalid input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53924414/

相关文章:

javascript - 提醒表单数据的最简单方法

javascript - 查找落在特定区域内的二维数据点

自动幻灯片放映的 JavaScript 代码无法在单独的 .js 文件中运行,但可以在 html 中运行

angular - ngIf 检查变量是否存在

javascript - 使用 angular4 在 innerhtml 中单击操作不起作用

html - Angular/Bootstrap - 带有可切换侧边栏的导航栏

html - CSS Textarea 和 Div 并排

javascript - 如何使用 Javascript 在外部点击时关闭 css 下拉菜单?

javascript - 在另一个可观察值之后使用 fork join 的更好方法

html - 悬停在每个其他元素上时深色叠加