我有3个输入字段,主要是必需的,但现在我想把逻辑,如果其中一个被填写,那么其余的两个不应该是必需的了。某种程度上它的工作正常,但问题是,如果我填写的形式,然后删除值(所以形式基本上是空的),它保持形式有效。
所以我键入Uname:abc 形式有效,但如果删除Uname --〉形式则无效
现在第二次输入如果我填写用户名:abcdef 格式有效
现在如果我删除用户名
表单仍然有效
下面是我的堆栈 lightning 战:
https://stackblitz.com/edit/angular-5l9kb4
5条答案
按热度按时间ffscu2ro1#
使用下面的代码
Stackblitz工作示例。
我已经添加了一个简单的条件
value.length > 0
来检查最小长度。如果你愿意,你可以添加更多的验证。我希望它能解决你的问题。yacmzcpb2#
首先检查
onTypeChange($event.target.value)
函数.ts档案
x6h2sr283#
我还没有使用被动式表单验证,但已完全满足您的要求。请检查以下代码:小提琴链接:disable form button on condition
mwkjh3gx4#
当这个值存在时,你的代码会清除验证器。现在,当你删除添加的值时,你的代码什么也不做。你必须重新添加验证器。
最好的方法是向整个窗体组添加自定义验证程序。此验证程序将有权访问组中的所有控件。请删除每个窗体控件上的订阅。
hs1ihplo5#
理想情况下,这应该是
FormGroup
验证器的职责。我建议您创建一个自定义验证器来验证整个FormGroup
,因为这正是您所追求的:在您的模板中:
这里有一个Working Sample StackBlitz给你的参考。