自定义验证问题为什么表格仍然无效

问题描述

我有一个带有一些自定义验证的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 (将#修改为@)