预期 1 个参数,但在自定义验证器上得到 2 个(ts 2554)
Expected 1 argument, but got 2 (ts 2554) on custom validator
我有以下验证器,添加它时出现此错误。
需要 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可以为null))
已经检查我确实得到了预期的数据,但不明白为什么这个验证器现在给出这个错误。将鼠标悬停在导入上显示它需要 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)]);
}
我有以下验证器,添加它时出现此错误。
需要 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可以为null))
已经检查我确实得到了预期的数据,但不明白为什么这个验证器现在给出这个错误。将鼠标悬停在导入上显示它需要 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)]);
}