我在一个表单组(即下面的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)
我应该如何解决?我搜寻了一些有关验证器/异步验证器的博客,但是它们都只使用其中一个,而不是两者都使用。
谢谢。