问题描述
我有一个带有一些自定义验证的FormGroup。在表单有效之前,将禁用“提交”按钮。但是出于任何原因,我都无法验证此表格。
我在这里想念什么吗?我可以记录每个经过验证为TRUE的控件,但不能记录全部表单。
initForm() {
this.form = this.formBuilder.group( {
first_name: [ '',Validators.required ],last_name: [ '',email: [ email || '',mobileNumber: [ '' ],city: [ '',this.validateCity.bind( this ) ],location: [ null,role: [ '',password: [ '',confirmPassword: [ '',agreedToTerms: [ false,Validators.requiredTrue ]
},{
validators: this.validateForm.bind( this )
} );
}
private validateForm( group: FormGroup ): ValidationErrors | null {
const pass1: string = group.get( 'password' ).value;
const pass2: string = group.get( 'confirmPassword' ).value;
const email: string = group.get( 'email' ).value;
const errors: any = {};
if ( !email ) {
errors.emailrequired = true;
} else if ( !email.match( /[^@\s]+@[^@\s]+\.[^@\s]+/ ) ) {
errors.invalidEmail = true;
}
if ( !pass1 ) {
errors.passwordrequired = true;
}
if ( pass1.length < this.minPasswordLength ) {
errors.passwordMinLength = true;
}
const passwordRulesRegEx = new RegExp(/^(?=(.*\d))(?=.*[@#\-_$%^&+=§!\?])(?=.*[a-z])(?=.*[A-Z])[0-9A-Za-z@#\-_$%^&+=§!\?]{8,}$/);
if(!passwordRulesRegEx.test(pass1)){
errors.passwordMinRules = true;
}
const passwordRulesNumberRegEx = new RegExp(/^(?=(.*\d))(?=.*[@#\-_$%^&+=§!\?])[0-9A-Za-z@#\-_$%^&+=§!\?]{1,}$/);
if (!passwordRulesNumberRegEx.test(pass1)) {
errors.passwordMinRulesNumbeRSSymbols = true;
}
const passwordRulesUppercaseRegEx = new RegExp(/^(?=.*[A-Z])(?=.*[a-z])[0-9A-Za-z@#\-_$%^&+=§!\?]{1,}$/);
if (!passwordRulesUppercaseRegEx.test(pass1)) {
errors.passwordMinRulesUpperLowercase = true;
}
if ( pass1 !== pass2 ) {
errors.passwordMismatch = true;
}
return errors;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)