angular表单自定义校验验证

本文介绍了如何在Angular中实现表单的自定义验证,包括同步和异步验证规则的设置,以登录密码验证为例详细阐述了验证方法的编写和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在formConfig的每个key对应的value中的验证方法部分填写验证规则代码,也可抽象成方法

以登录密码验证为例:

const _config = {
    id: [, , , {label: '', class: 'col-md-12 col-lg-12', hidden: true, type: 'static'}],
    code: [, , , {label: '员工编号', class: 'col-md-12 col-lg-12', type: 'static'}],
    name: [, , , {label: '员工姓名', class: 'col-md-12 col-lg-12', type: 'static'}],
    loginName: [, [Validators.required, Validators.maxLength(32)], , {
        label: '登录名',
        requiredError: '登录标识由6位以上字母、数字组成,可使用电子邮件地址',
        class: 'col-md-12 col-lg-12',
    }],
    bPassword: [, [Validators.required, Validators.minLength(8), this.confirmBPassword(), this.validPassWord()], , {
        label: '新密码',
        requiredError: '登录密码由6位以上字母、数字组成',
        type: 'password',
        class: 'col-md-12 col-lg-12',
    }],
    cPassword: [, [Validators.required, Validators.minLength(8), this.confirmCPassword(), this.validPassWord()], , {
        label: '确认密码',
        requiredError: '登录密码由6位以上字母、数字组成',
        type: 'password',
        class: 'col-md-12 col-lg-12',
    }]
};
confirmCPassword(): ValidatorFn {
    return (control: AbstractControl): { [key: string]: any } => {
        return this.password !== control.value ? {'customValid': {error: '两次输入密码不一致'}} : null;
    };
}

confirmBPassword(): ValidatorFn {
    return (control: AbstractControl): { [key: string]: any } => {
        this.password = control.value;
        return null;
    };
}

validPassWord(): ValidatorFn {
    return (control: AbstractControl): {[key: string]: any} => {
        let result= /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]$/.test(control.value);
        return result ? null : {'customValid': {error: '密码格式为字母大小写加数字'}};
    };
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值