角度反应形式根据其他两个输入验证输入

Vis*_*dev 1 angular-material angular angular-reactive-forms

我有三个输入字段,即

  1. 最低分数
  2. 最高分
  3. 原产地于

因此,origin at值必须介于最低分数和最高分数之间。

我的表格看起来像这样

this.fb.group({
    min: ['', [Validators.required]],
    max: ['', [Validators.required]],
    origin: ['', [Validators.required, Validators.min(?), Validators.max(?)]] # I need value of min and max input field value here
})
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何正确验证来源输入字段?

编辑:

注意 -fbFormBuilder

我的整个表格

this.scalesForm = this.fb.group({
  scales: this.fb.array([
    this.fb.group({
      type: ['x', [Validators.required]],
      name: ['', [Validators.required]],
      components: this.fb.array([], [Validators.required]),
      min: ['', [Validators.required]],
      max: ['', [Validators.required]],
      origin: ['', [Validators.required]]
    }),
    this.fb.group({
      type: ['y', [Validators.required]],
      name: ['', [Validators.required]],
      components: this.fb.array([], [Validators.required]),
      min: ['', [Validators.required]],
      max: ['', [Validators.required]],
      origin: ['', [Validators.required]]
    })
  ])
});
Run Code Online (Sandbox Code Playgroud)

axl*_*ode 5

我将使用自定义验证器,在您的情况下类似:

export function ValidateOrigin(control: AbstractControl): {[key: string]: boolean} | null {
  if (control.value < this.scalesForm.controls.scales[0].controls.min.value && control.value > this.scalesForm.controls.scales[0].controls.max.value) {
    return { invalidOrigin: true };
  } else {
    return null;
  }
}

// in the form declaration
this.fb.group({
  min: ['', [Validators.required]],
  max: ['', [Validators.required]],
  origin: ['', [Validators.required, ValidateOrigin]]
})
Run Code Online (Sandbox Code Playgroud)