我使用的角度RC4版本编写的应用程序,我有几个强加验证规则,形成像required
成分,具有一定的自定义验证minlength
emailValidator
一起。
当我通过一个内置的,一个自定义验证到Validators.compose
功能,集成开发环境(包括Webstorm&VS码)显示我编译如下所示的一个时间错误消息:
但是,你可以看到,在上面的截图如果两个校验器内置的,没有错误消息。
我的自定义验证的定义下面给出:
static emailValidator(control: AbstractControl): {[key: string]: boolean} {
if (control.value.match(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/)) {
return null;
} else {
return {'invalidEmailAddress': true };
}
}
我有一个类似的问题。就我而言,我打电话从我创建了一个共享角7库包含自定义EmailValidator类用于。因为
"@angular/forms": "~7.2.2"
在我qazxsw POI文件qazxsw POI的两个不同的次要版本得到安装我的库和应用程序,包括它,从而导致不同的打字稿定义文件。解决的办法是
这是很奇怪的,你已经与package.json
试过吗?
像这样?
@angular/forms
在我的组件都使用FormControl
和它工作得很好。
我通过从static emailValidator(control : FormControl){
// RFC 2822 compliant regex
let EMAIL_REGEXP = /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;
return EMAIL_REGEXP.test(control.value) ? null : {
invalidEmailAddress:true
}
}
替换Validator.compose
参数的类型control
如下所示解决了这个问题:
AbstractControl
Control
类从static emailValidator(control: Control): {[key: string]: boolean} {
if (control.value.match(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/)) {
return null;
} else {
return {'invalidEmailAddress': true };
}
}
延伸。我还是不明白,为什么当我使用Control
或AbstractControl
我收到此错误信息。