Angular 2 Reactive Forms 触发提交验证

2024-01-01

有没有一种方法可以在提交时触发反应式表单的所有验证器,而不仅仅是“脏”和“触摸”事件?

这样做的原因是我们有一个非常大的表单,它不指示某个字段是否为必填字段,并且用户可能会错过一些必需的控件,因此在提交时,预计会遗漏所有无效字段将由最终用户显示。

我尝试使用以下命令将表单标记为“已触及”

FormGroup.markAsTouched(true);

它有效,所以我也尝试将其标记为“脏”

FormGroup.markAsDirty(true);

但该类的 css 仍然是“ng-pristine”,

有没有办法从组件手动触发它,我尝试谷歌搜索但无济于事,提前感谢您!

UPDATE

我已经通过迭代 FormGroup.controls 并将其标记为“脏”来使其工作,但是有没有一种“标准”方法可以做到这一点。


这可以通过提供的示例来实现here https://github.com/angular/angular/issues/14527#issuecomment-280726674,您可以在其中使用NgForm指示:

<form [formGroup]="heroForm" #formDir="ngForm">

然后在验证消息中检查表单是否已提交:

<small *ngIf="heroForm.hasError('required', 'formCtrlName') && formDir.submitted">
  Required!
</small>

编辑:现在也是{ updateOn: 'submit'}已提供,但仅当您没有时才有效required在表格上,如required无论如何最初都会显示。不过,您可以通过检查字段是否已被触摸来抑制这种情况。

// fb is 'FormBuilder'
this.heroForm = this.fb.group({
 // ...
}, { updateOn: 'submit'})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2 Reactive Forms 触发提交验证 的相关文章

随机推荐