Angular 2+ 表单在新加载无效值时通过验证

Angular 2+ forms pass validation when invalid values are freshly loaded

我有一系列每五分钟自动保存一次的表格。表单可以并且应该在此过程中保存 invalid 值(考虑了 maxLength 问题以在后端保存问题)。

此外,用户可以随时提交表单,但要这样做,表单需要有效。

到目前为止我已经准备好了所有这些。

问题是,当自动保存后重新访问表单时,没有发生有效的用户提交,因为 Angular 加载了 无效的 值,因为它应该,但随后表明表单是有效的,即使某些加载的值不应该通过它们的验证器。

我目前正在构建一些非常高级的表单,但是 非常 是 Angular 表单验证的新手。很抱歉这个菜鸟问题,但在这种情况下,我应该如何告诉 Angular 对无效的新加载字段进行 运行 验证?

我已经开始破解 dirty/pristine、touched/untouched、pending 等,并掌握了它,但不确定这些是否是我需要的或如何实现一些东西将整个表格标记为我需要的,没有副作用。

您在 dirty/pristine/touched 方面进展顺利。但是,FormGroup 提供了一种检查方法:

afterFormGetsPopulated() {
  this.formGroup.updateValueAndValidity();
}

我认为这应该可行,但我现在无法对其进行实时测试。如果没有,每个 FormControl 都有相同的方法:

afterFormGetsPopulated() {
  this.formGroup.controls.forEach(c => c.updateValueAndValidity());
}