【问题标题】:Angular 8 set input validation based on dropdown chose [duplicate]基于下拉选择的Angular 8设置输入验证[重复]
【发布时间】:2019-12-18 10:05:43
【问题描述】:

我是 Angular 的新手,发现这个验证概念很棘手。 但我一直在寻找互联网,我似乎无法找到我的问题的答案。虽然有很多关于 Angular 验证的好技巧和指南。

所以我的问题是我有一个下拉菜单,其中包含 6 个用户可以选择的选项。用户选择一个选项后,我希望输入字段更改验证。举个例子:

如果用户在下拉菜单中选择选项 1。我希望输入字段具有所需的验证和最大长度 5 个令牌。

如果用户在下拉菜单中选择选项 2。我希望输入字段具有所需的验证,并且 最大长度为 10 个令牌。

如果用户在下拉菜单中选择了选项 6。我希望在没有验证的情况下禁用输入字段。 (如果用户选择了这个选项,那么验证表单组应该是有效的)

任何想法将不胜感激。

Angular dropdown validation 中的答案不包括更改输入元素的验证。

【问题讨论】:

  • 这能回答你的问题吗? Angular dropdown validation
  • @MEDZ 不完全是。下拉菜单上缺少订阅。所以我可以更改验证。

标签: angular validation angular8


【解决方案1】:

您可以使用valueChangessetValidators()clearValidators() 执行此操作。

首先您需要使用表单控件的valueChanges 订阅下拉菜单的每个值更改。订阅将发出下拉列表的新值,并使用新值运行逻辑来决定需要应用的验证。之后,您可以使用setValidators() 方法为输入字段的表单控件设置验证。如果您需要删除验证,您可以使用clearValidators() 方法。您可以使用表单控件上的disable()enable() 方法启用或禁用字段。

例子:

field1.valueChanges.subscribe((val) => {
  if (val === 'a') {
    field2.setValidators([Validators.minLength(1)]);
  } else {
    field2.clearValidators();
  }
}

【讨论】:

  • 谢谢!是的,订阅下拉菜单修复了它。
猜你喜欢
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
相关资源
最近更新 更多