有没有办法检查是否需要控制?

当我实现了一个接受FormControl且不仅具有input而且具有验证错误的专用表单域组件时,便出现了问题。由于需要某些字段,因此最好让用户知道*是否需要它。

有没有办法检查@Input() control: FormControl中的Validators.required并显示一个星号?

最佳答案

您可以执行以下操作:

import { Component } from '@angular/core';
import { FormGroup, FormControl, Validators, AbstractControl } from '@angular/forms';

@Component({...})
export class AppComponent  {
  form: FormGroup = new FormGroup({
    control: new FormControl(null, Validators.required)
  });

  get validator() {
    const validator = this.form.get('control').validator({} as AbstractControl);
    console.log(validator);
    if (validator && validator.required) {
      return true;
    }
  }
}


然后在您的模板中:

<form [formGroup]="form" (submit)="onSubmit()">
  Control: <span *ngIf="validator">*</span> <input type="text" formControlName="control">
  <button>Submit</button>
</form>




注意:只需使用此AbstractControl将窗体控件作为this.form.get('control').validator({} as AbstractControl);类型

这将返回一个带有FormControl上存在的验证器列表的Object。然后,您可以检查对象中的required键。如果存在并且其值为true,则可以确保在FormControl上应用了必需的验证器。



这是供您参考的Working Sample StackBlitz

关于angular - Angular FormControl检查(如果需要),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53557690/

10-10 15:34