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

时间:2018-07-27 10:53:57

标签: angular angular-forms angular-validation

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

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

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

2 个答案:

答案 0 :(得分:6)

  

(如果要执行passwordValidator,则需要在验证器函数示例中添加'()' password1:new   FormControl(“”,[Validators.required,this.passwordValidator()]),   虽然会抛出错误,因为您在其中使用了FormGroup   不会引用formData password1和password2)

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

value: Object
email1: "data"
email2: ""
__proto__: Object

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;
  }; 

答案 1 :(得分:0)

  

在输入字段中使用type="email"代替type="text",除非formgroup对象不知道字段值是否有效。

检查:https://stackblitz.com/edit/angular-eol5eq?file=src/app/app.component.html