【发布时间】:2018-01-15 01:08:36
【问题描述】:
我需要以编程方式更改 Angular Reactive Form 中输入的验证器。
所以我初始化表单:
...
limitNumber: [{ value: null, disabled: (this.id ? true : false) }]
...
稍后我启用输入并更改其所需的验证器:
this.newEventForm.get('limitNumber').enable();
this.newEventForm.get('limitNumber').setValidators(Validators.required);
紧接着,输入的状态是VALID,只要它保持原始状态。如果我编辑输入值并擦除,则它变为“无效”。
我的问题是,一旦我将验证器设置为 required,即使是原始的,我也需要输入无效。
我该怎么办?
***** 编辑 *****
我的目标是能够有条件地要求输入。 想象一下用户创建了一个事件。在新的活动表单中,它可以选择设置最大参与者数量。 如果用户切换输入(我们称之为“isLimited”),那么我需要一个新的输入来输入这个数字限制,它会被启用(我们称之为“limitNumber”输入),因此必须填写。
所以我的最终目标是仅当“isLimited”输入切换为 true 时才将此输入设为“必需”
【问题讨论】:
-
为什么需要这样的功能这里的终极目标是什么,可能还有另一种简单的方法。
-
您需要获取该 formControl,然后将其标记为已触摸,这可能会有所帮助
this.formControl.control.markAsUntouched({onlySelf: true}); -
@RahulSingh 我尝试了 Untouched、Touched 和 Dirty 都没有成功。在我的帖子中查看我的编辑,它解释了最终目标。希望更清楚
标签: angular angular-reactive-forms