应为1个参数,但在自定义验证器上得到2个(ts 2554)



我有下面的验证器,当添加它时,我会收到这个错误。

应为1个参数,但得到2个(ts 2554(。

当我读到它的时候,我大多认为过载是个问题,但这里没有过载。

export const customValidatorAsync = (co: CustomObject, id: string): AsyncValidatorFn =>
return (control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {
...
});

然后像这样实现它(这个字段在用户添加更多实例时添加的一组字段中(:

setFieldValidators(index: number): void {
const array = <FormArray>objectRegistrationForm.controls["children"];
const group = <FormGroup>array.controls[index];
group.controls["field"].setValidators([
Validators.required,
Validators.maxLength(20)],
[customValidatorAsync(customObject, objectRegistrationToSave.children[index].id)]);
}

此验证器以前不需要id,因为用户无法修改数据。但现在,如果数据没有被其他对象使用,就应该检查数据。所以我需要当前的id(创建新注册时会为空,所以id可以为空(

我已经检查过我是否得到了预期的数据,但不明白为什么这个验证器现在会出现这个错误。将鼠标悬停在导入上显示它需要2个参数。

我看错了东西。。。

setFieldValidators(index: number): void {
const array = <FormArray>objectRegistrationForm.controls["children"];
const group = <FormGroup>array.controls[index];
group.controls["field"].setValidators([
Validators.required,
Validators.maxLength(20)],
[customValidatorAsync(customObject, objectRegistrationToSave.children[index].id)]);
}

应该没有额外的][在setValidators.中的常规和自定义验证器之间

setFieldValidators(index: number): void {
const array = <FormArray>objectRegistrationForm.controls["children"];
const group = <FormGroup>array.controls[index];
group.controls["field"].setValidators([
Validators.required,
Validators.maxLength(20),
customValidatorAsync(customObject, objectRegistrationToSave.children[index].id)]);
}

相关内容

  • 没有找到相关文章

最新更新