以反应形式自定义验证器传递动态参数

时间:2021-05-27 16:47:49

标签: javascript angular typescript angular-reactive-forms angular-custom-validators

我想在这样的自定义验证器中传递一个变量作为参数

    newSimulation: new FormControl('', [uniqNameValidator(this.options)])

然后在我的自定义验证器中使用它

export function uniqNameValidator(list: any): ValidatorFn {
  return (control: AbstractControl): ValidationErrors | null => {
    const simulationFlatList = list.map(val => val.closingPeriodSimulationName)
    return simulationFlatList.indexOf(control.value) > -1 ? { message: "simulation exists" } : null;
  }
}

问题在于 this.options 始终为空。我将它初始化为 [] 但当用户与表单(第一个字段)交互时,我将其更新为字符串数组,我认为自定义验证器不会重新检查 this.options 的值? 在这种情况下如何在自定义验证器中传递变量?

1 个答案:

答案 0 :(得分:0)

这可能有效,将函数绑定到组件 newSimulation: new FormControl('', [uniqNameValidator.bind(this)]) 然后在函数中您可以访问 this.options