我有下面的验证器,当添加它时,我会收到这个错误。
应为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)]);
}