角度6:自定义验证程序未执行

Jet*_*tte 3 angular-validation angular angular-forms

我已经为此战斗了两天。我只是不知道怎么了。看来我的自定义验证程序未执行。

如果您仅按下“下一步”按钮,则每个控件均以红色边框突出显示。如果填写表单,请在电子邮件字段中键入不同的值,然后按“下一步”,该表单是有效的,并且自定义电子邮件验证程序中看不到任何console.log。

https://stackblitz.com/edit/angular-nwhgpb

Che*_*pan 7

(如果要执行passwordValidator,则需要在验证器函数示例password1中添加“()” :new FormControl(“”,[Validators.required,this.passwordValidator()]),即使由于FormGroup您会抛出错误在内部使用将不会引用formData password1和password2)

如果要比较两个输入字段,则需要在formGroup内使用formGroup,因为如果不对formGroup使用表单组,则不会保存这样的对象。

value: Object
email1: "data"
email2: ""
__proto__: Object
Run Code Online (Sandbox Code Playgroud)

https://angular.io/guide/form-validation#custom-validators使用此Ref来实现ComparePassword和电子邮件

/** A hero's name can't match the given regular expression */
export function forbiddenNameValidator(nameRe: RegExp): ValidatorFn {
  return (control: AbstractControl): {[key: string]: any} | null => {
    const forbidden = nameRe.test(control.value);
    return forbidden ? {'forbiddenName': {value: control.value}} : null;
  }; 
Run Code Online (Sandbox Code Playgroud)