【问题标题】:Expected 1 argument, but got 2 (ts 2554) on custom validator预期 1 个参数,但在自定义验证器上得到 2 个(ts 2554)
【发布时间】:2021-12-15 09:13:40
【问题描述】:

我有以下验证器,添加它时出现此错误。

预期 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 个参数。

【问题讨论】:

    标签: typescript validation


    【解决方案1】:

    我看错东西了……

    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)]);
    }
    

    【讨论】:

      猜你喜欢
      • 2022-08-24
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 2020-08-31
      • 2019-12-28
      • 2020-04-22
      • 2018-09-07
      • 1970-01-01
      相关资源
      最近更新 更多