繁体   English   中英

Angular 2反应形式模式验证器; 无视案例

[英]Angular 2 Reactive Forms Pattern Validator; Ignoring Case

在Angular 2.1.0 Reactive表单中,我有一个使用formBuilder组函数的表单,它尝试使用模式验证器来验证其中一个字段。

this.profileForm = this.formBuilder.group({
'email': [this.profile.email, [
            Validators.pattern('^[a-z0-9A-Z_]+(\.[_a-z0-9A-Z]+)*@[a-z0-9-A-Z]+(\.[a-z0-9-A-Z]+)*(\.[a-zA-Z]{2,15})$')
        ]],
//...

正如您所看到的,我已经在组上手动添加了大写AZ,但我想知道是否有一种方法可以指定模式验证器来忽略大小写。 我似乎无法在网上找到任何示例,因为我可以告诉你无法传递一个实际的RegExp对象,它必须是一个字符串。

在最新版本的Angular中,这些已修复此问题,Validators.pattern函数现在接受RegExp对象。

对于这个版本,我只是创建了一个自定义验证类,并添加了我自己的模式函数,它接受一个RegExp对象。 看起来像这样:

import { AbstractControl, ValidatorFn } from '@angular/forms';
export class CustomValidators {

    public static pattern(reg: RegExp) : ValidatorFn {
        return (control: AbstractControl): { [key: string]: any } => {
            var value = <string>control.value;
            return value.match(reg) ? null : { 'pattern': { value } };
        }
    }
}

引用此验证器的表单如下所示:

    this.profileForm = this.formBuilder.group({
        'firstName': [{ value: this.profile.firstName, disabled: true }],

        //... other fields

        'email': [this.profile.email, [
            CustomValidators.pattern(/^[a-z0-9_]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,15})$/ig)
        ]],

        //...other fields

    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM