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