【问题标题】:Checking Multiple Row Custom Validator in Angular 4 Reactive Forms在 Angular 4 响应式表单中检查多行自定义验证器
【发布时间】:2018-07-14 19:18:15
【问题描述】:

我有一个非常简单的问题,我无法解决。首先,我有一种已批准数量的成分。这种成分有几个有效期。但是,我想检查我的“转让数量”的到期日期是否不超过批准的数量。

我应该如何检查这个?我已经完成了一些部分,但是这个我无法比较,因为它必须根据一个批准的数量检查几行“要转移的数量”。下面是代码链接:

FORKED LINK HERE

customValidator(group: any) {
    if ((group.controls.transfer_qty.value > group.parent.parent.controls.approved_qty.value)) {
      return { out1: true }
    }
    if ((group.controls.transfer_qty.value > group.controls.available_qty.value)) {
      return { out2: true }
    }
    return null;
  }

【问题讨论】:

  • 这需要一些时间,:)
  • 有点复杂,因为您需要对一组输入进行 2 次验证

标签: angular angular-reactive-forms angular4-forms angular-forms reactive-forms


【解决方案1】:

当涉及到嵌套表单时,我通常会实现自定义表单控件。 一个好的规则是将代码抽象成小块,在我们的例子中将你的 Angular 代码分解成小组件。

您可以使用ControlValueAccessor 实现自定义表单控件

我修改了您的示例以说明我的意思: Modified Example

Example without implementing ControlValueAccessor

【讨论】:

  • 您的代码与我的代码完全一样。我的问题是当批准数量为 100 时。它有两个到期日期,您在第一个要转移的数量中输入 100,在第二个中输入 2。它应该输出一个错误。这是我的问题
  • 试了你说的场景,效果和预期一样,能不能再检查一下,我最近改了
  • 链接是一样的吗?
  • 问题还是一样。你能检查一下我编辑过的问题吗?我已附上图片。
  • 在我的图片中,我输入了100和1。它应该输出一个错误,因为它超过了100的批准数量
猜你喜欢
  • 2018-09-19
  • 2022-01-23
  • 2017-08-28
  • 2020-10-16
  • 1970-01-01
  • 2020-01-13
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
相关资源
最近更新 更多