在Angular 2自定义验证程序中返回null引发错误 电子邮件地址 mailAddress是必需的 电子邮件格式无效 组件代码: this.BusinessInfoForm=this.BI.group({ “BusinessName”:['',Val

在Angular 2自定义验证程序中返回null引发错误 电子邮件地址 mailAddress是必需的 电子邮件格式无效 组件代码: this.BusinessInfoForm=this.BI.group({ “BusinessName”:['',Val,angular,angular2-routing,angular2-forms,custom-validators,angular-reactive-forms,Angular,Angular2 Routing,Angular2 Forms,Custom Validators,Angular Reactive Forms,在Angular 2自定义验证程序中返回null引发错误 电子邮件地址 mailAddress是必需的 电子邮件格式无效 组件代码: this.BusinessInfoForm=this.BI.group({ “BusinessName”:['',Validators.required], “Bphone”:['',需要验证器], “CBphone”:['',需要验证程序], “Bemail”:['',Validators.compose([Validators.required,Global

在Angular 2自定义验证程序中返回null引发错误

电子邮件地址

mailAddress是必需的

电子邮件格式无效

组件代码: this.BusinessInfoForm=this.BI.group({ “BusinessName”:['',Validators.required], “Bphone”:['',需要验证器], “CBphone”:['',需要验证程序], “Bemail”:['',Validators.compose([Validators.required,GlobalValidator.mailFormat]), “CBemail”:['',需要验证人], “BzipCode”:['',需要验证人], “Bcity”:['',需要验证人], “Bstate”:['',需要验证人], “Bstreet1”:['',需要验证程序], “Bstreet2”:['',需要验证人], “FirstName”:[“”,Validators.required], “LastName”:['',Validators.required], “zipcode”:['',需要验证程序], “城市”:['',需要验证人], “状态”:['',需要验证人], “checkboxvalue”:['',验证器。必需], “streetAddress1”:['',需要验证程序], “streetAddress2”:['',需要验证程序], },{validator:matchingValidator('Bemail','CBemail')}) } 全局验证程序类: 从'@angular/forms'导入{NG_验证程序,AbstractControl,ValidatorFn,Validator,FormControl}; 导出类GlobalValidator{ 静态邮件格式(控件:FormControl):ValidationResult{ console.log(control.value); var EMAIL \[u REGEXP=/^([^()\[\]\\,;:\s@“]+(\.[^()\[\]\,;:\s@“]+)*)(“+”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}]);([a-zA Z-0-9]+-Z]-/[a-Z]-];
如果(control.value!=“”&(control.value.length)这可能是什么?可以尝试禁用角度中的属性。最初将标志设为false,当用户有效时,将其设为true并启用第二步。。
     <div class="col-md-6">
                <div class="form-group">
                    <h6>Email Address</h6>
                    <input type="text" class="form-control"  name="email"   formControlName='Bemail' required>
                    <div [hidden]="BusinessInfoForm.controls.Bemail.valid || (BusinessInfoForm.controls.Bemail.pristine && !submitted)" >
                                <p class="text-danger" [hidden]="!BusinessInfoForm.controls.Bemail.errors.required">mailAddressis required.</p>
                                <p  class="text-danger" [hidden]="!BusinessInfoForm.controls.Bemail.errors.incorrectMailFormat">Email format is invalid.</p>
                            </div>
                </div>
            </div>

Component code:


    this.BusinessInfoForm=this.BI.group({
              'BusinessName':['', Validators.required ],
              "Bphone":['', Validators.required ],
              "CBphone":['', Validators.required ],
              "Bemail": ['',Validators.compose([Validators.required, GlobalValidator.mailFormat])],
              "CBemail":['', Validators.required ],
              "BzipCode": ['', Validators.required ],
              "Bcity": ['', Validators.required ],
              "Bstate": ['', Validators.required ],
              "Bstreet1": ['', Validators.required ],
              "Bstreet2": ['', Validators.required ],
              'FirstName':['', Validators.required ],
              "LastName":['', Validators.required ],
              "zipcode": ['', Validators.required ],
              "city": ['', Validators.required ],
              "state": ['', Validators.required ],
              "checkboxvalue":['',Validators.required],
              "streetAddress1": ['', Validators.required ],
              "streetAddress2": ['', Validators.required ],
          },{validator:matchingValidator('Bemail','CBemail')})
          }
Global Validator Class:

    import { NG_VALIDATORS, AbstractControl, ValidatorFn, Validator,FormControl  } from '@angular/forms';
    export class GlobalValidator{

        static mailFormat(control: FormControl): ValidationResult {
            console.log(control.value);
            var EMAIL_REGEXP = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

            if (control.value != "" && (control.value.length <= 5 || !EMAIL_REGEXP.test(control.value))) {
                return { "incorrectMailFormat": true };
            }    
           return  null;           
        }    
    }
interface ValidationResult {
    [key: string]: boolean;
}