角度反应形式的自定义验证器永远不会触发

时间:2021-05-31 00:49:10

标签: reactive-forms

我为一个简单的表单控件创建了一个非常简单的自定义验证器,例如MatInput,它总是返回非空值,例如无效的。我还添加了一个预先构建的验证器,例如必需的。当我启动我的应用程序时,我可以看到 status = INVALIDerrors.required = true

一旦我开始输入,我预计状态将保持 INVALIDerrors.myError = true,但事实并非如此。我究竟做错了什么?我已经在 StackBlitz 上构建了我的示例。我还在下面的 TS 和 HTML 文件中添加了内容

TS

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

export function myValidator(): ValidatorFn {
  return (control: AbstractControl): ValidationErrors | null => {
      return { "myError": true };
  };
}

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
  name = new FormControl('', [Validators.required, myValidator]);
}

HTML

<label>
    Name:
    <input type="text" [formControl]="name">
</label>

{{ name | json }}

我对 Angular 很陌生,我不知道如何调试它。接下来我可以尝试什么?

1 个答案:

答案 0 :(得分:0)

TL;博士:

export class AppComponent {
  name = new FormControl('', [Validators.required, myValidator()]);
}

说明:

myValidator 没有被调用,所以你没有得到 ValidatorFn

相关问题