Angular 即使 setValidators 设置为必需,反应式表单输入在原始状态下也是有效的
Angular reactive forms input is valid if pristine even if setValidators set to required
我需要以编程方式更改 Angular 响应式表单中输入的验证器。
所以我初始化了表单:
...
limitNumber: [{ value: null, disabled: (this.id ? true : false) }]
...
稍后我启用输入并将其验证器更改为必需的:
this.newEventForm.get('limitNumber').enable();
this.newEventForm.get('limitNumber').setValidators(Validators.required);
在此之后,只要保持原始状态,输入的状态就是 VALID
。如果我编辑输入值并擦除然后它变成 'INVALID'.
我的问题是,我需要在将其验证器设置为 required
后立即使输入无效,即使是原始的。
我该怎么办?
***** 编辑 *****
我的目标是能够有条件地要求输入。
假设用户创建了一个事件。在新的活动形式中,它可以选择设置最大参与者人数。
如果用户切换输入(让我们称之为 'isLimited'),那么我需要一个新的输入,以输入这个数字限制,它被启用(让我们称之为 'limitNumber' 输入),因此必须填写。
所以我的最终目标是仅当 'isLimited' 输入切换为 true
时才使此输入 "required"
我只需要使用以下代码来检查有效性:
this.newEventForm.get('limitNumber').updateValueAndValidity();
我需要以编程方式更改 Angular 响应式表单中输入的验证器。
所以我初始化了表单:
...
limitNumber: [{ value: null, disabled: (this.id ? true : false) }]
...
稍后我启用输入并将其验证器更改为必需的:
this.newEventForm.get('limitNumber').enable();
this.newEventForm.get('limitNumber').setValidators(Validators.required);
在此之后,只要保持原始状态,输入的状态就是 VALID
。如果我编辑输入值并擦除然后它变成 'INVALID'.
我的问题是,我需要在将其验证器设置为 required
后立即使输入无效,即使是原始的。
我该怎么办?
***** 编辑 *****
我的目标是能够有条件地要求输入。 假设用户创建了一个事件。在新的活动形式中,它可以选择设置最大参与者人数。 如果用户切换输入(让我们称之为 'isLimited'),那么我需要一个新的输入,以输入这个数字限制,它被启用(让我们称之为 'limitNumber' 输入),因此必须填写。
所以我的最终目标是仅当 'isLimited' 输入切换为 true
时才使此输入 "required"我只需要使用以下代码来检查有效性:
this.newEventForm.get('limitNumber').updateValueAndValidity();