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();