通过全局验证在字段上显示错误

时间:2018-07-19 15:44:36

标签: angular angular-material2

我想在表单上实现全局验证,并根据此验证更改某些输入的颜色。

我有三个领域。仅当第一个字段的值为“ test”时,才需要两个字段。

这是我实现的:

function typeValidator(form: FormGroup) {
  const type = form.controls['field1'].value;
  if (type === 'test') {
    const field2 = form.controls['field2'].value;
    const field3 = form.controls['field3'].value;
    return (!field2 || !field3) ? { requiredIf: true } : null;
  }

  return null;
}

关于HTML:

<mat-form-field color="accent">
  <mat-select formControlName="field1" placeholder="Field1">
    <mat-option value="test">Test</mat-option>
    <mat-option value="other">Other</mat-option>
  </mat-select>
</mat-form-field>

<mat-form-field color="accent">
  <mat-select formControlName="field2" placeholder="Field2">
    <mat-option *ngFor="let element of elements" [value]="element.id">{{element.name}}</mat-option>
  </mat-select>
</mat-form-field>

验证工作正常,但是当表单出现field2类型的验证错误时,我想将requiredIf的颜色更改为橙​​色。

感谢您的帮助。 蒂埃里

1 个答案:

答案 0 :(得分:1)

myFormControl.hasError('myError')作为自定义验证器添加到所需的字段。您可以通过 plot "data" using 1:2 with boxes 检查表单控件是否存在自定义错误,该条件可以在类语句中用于根据错误状态添加/删除类。