[英]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.