角2-错误:类型“AbstractControl”是不能分配给输入“AbstractControl”

问题描述 投票:2回答:3

我使用的角度RC4版本编写的应用程序,我有几个强加验证规则,形成像required成分,具有一定的自定义验证minlength emailValidator一起。

当我通过一个内置的,一个自定义验证到Validators.compose功能,集成开发环境(包括Webstorm&VS码)显示我编译如下所示的一个时间错误消息:

enter image description here

但是,你可以看到,在上面的截图如果两个校验器内置的,没有错误消息。

我的自定义验证的定义下面给出:

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 };
    }
}
angular angular2-forms
3个回答
1
投票

我有一个类似的问题。就我而言,我打电话从我创建了一个共享角7库包含自定义EmailValidator类用于。因为

"@angular/forms": "~7.2.2"

在我qazxsw POI文件qazxsw POI的两个不同的次要版本得到安装我的库和应用程序,包括它,从而导致不同的打字稿定义文件。解决的办法是

  1. 删除文件夹node_modules两个项目
  2. 删除包lock.json为这两个项目
  3. 做一个NPM安装两个项目
  4. 重新安装库

0
投票

这是很奇怪的,你已经与package.json试过吗?

像这样?

@angular/forms

在我的组件都使用FormControl和它工作得很好。


0
投票

我通过从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 }; } } 延伸。我还是不明白,为什么当我使用ControlAbstractControl我收到此错误信息。

© www.soinside.com 2019 - 2024. All rights reserved.