在Angular中,我可以同时实现Validator和AsyncValidator吗?

时间:2020-10-07 08:45:23

标签: angular

我在一个表单组(即下面的myForm)中有多个表单控件,这是另一个表单组的嵌套表单。 此嵌套表单的某些表单控件使用验证器,而其他一些控件则使用异步验证器。 因此,我的类像显示的代码片段一样实现了Validator和AsyncValidator。

@Component({
  providers: [
    {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => MyComponent ),
      multi: true
    },
    {
      provide: NG_VALIDATORS,
      useExisting: forwardRef(() => MyComponent ),
      multi: true
    },
    {
      provide: NG_ASYNC_VALIDATORS,
      useExisting: forwardRef(() => MyComponent ),
      multi: true
    }
  ]
})
    export class MyComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator, AsyncValidator {
        public myForm: FormGroup;
    .......
    .......
    .......
        validate(c: AbstractControl): ValidationErrors | null {
        return this.myForm.invalid ? { invalidForm: { valid: false, message: 'Form fields are invalid' } } : null;}
    
        validate(c: AbstractControl): Observable<ValidationErrors | null> {
        return this.myForm.invalid ? { invalidForm: { valid: false, message: 'Form fields are invalid' } } : null;}
    
    }

但是,它显示以下错误:

重复的函数实现。ts(2393)类型中的属性“ validate” 'MyComponent'不可分配给基本类型中的相同属性 'AsyncValidator'。类型'(c:AbstractControl)=> ValidationErrors'是 不可分配给类型'(control:AbstractControl)=> 承诺| Observable'.ts(2416)

我应该如何解决?我搜寻了一些有关验证器/异步验证器的博客,但是它们都只使用其中一个,而不是两者都使用。

谢谢。

0 个答案:

没有答案