角度反应形式验证器。如何将控制值与嵌套值进行比较

时间:2018-06-02 10:19:16

标签: angular

我需要获得可以是任何级别深度的字段的值(不仅仅是子级)。原因是当前函数只检索子控件值 - control.root.get(field).value ,但它可能更深......是否有办法展平控件?

export function ValidatorValueMatchTo(field: string): ValidatorFn {
  return (control: AbstractControl): ValidationErrors | null => {
    const controlValue = control.value;
    if (controlValue) {
      const compareValue = control.root.get(field).value;
      if (compareValue && controlValue !== compareValue) {
        return { mismatch: true };
      }
    }
    return null;
  };
}

有点解决方案对我来说。实际上所有比较我的值来自同一组。因此,通过将 root更改为父 - 您可以比较同一表单组中的值:

export function ValidatorValueMatchTo(field: string): ValidatorFn {
  return (control: AbstractControl): ValidationErrors | null => {
    const controlValue = control.value;
    if (controlValue) {
      const compareValue = control.parent.get(field).value;
      if (compareValue && controlValue !== compareValue) {
        return { mismatch: true };
      }
    }
    return null;
  };
}

事实证明 get函数接受数组和嵌套对象。所以我不得不在我的初始功能中改变任何东西。但要执行验证器,如下所示: ValidatorValueMatchTo(“my.nested.to.compare.with”)

0 个答案:

没有答案