【发布时间】:2018-04-09 23:38:30
【问题描述】:
在我的 Angular 4 应用程序中,我有一个带有多个控件的表单。
在某些时候我需要强制更新它们的有效性,所以我正在这样做:
this.form.get('control1').updateValueAndValidity();
this.form.get('control2').updateValueAndValidity();
this.form.get('control3').updateValueAndValidity();
// and so on....
然后:
this.form.updateValueAndValidity();
这很好用。
但是我想知道是否有更好的方法来完成同样的事情,只需在父窗体上调用一个方法。
根据其documentation,updateValueAndValidity()方法:
默认情况下,它还会更新其祖先的值和有效性。
但就我而言,我需要更新其后代的价值和有效性。这样我就可以去掉很多行代码了。
【问题讨论】:
-
您是否尝试过查看它是否确实更新其后代?
-
类似...?
-
...不先直接调用后代的方法?我原以为
updateValueAndValidity也适用于子表单。 -
当然可以,但它不起作用
-
有趣的问题。我认为它不是开箱即用的,在这种情况下
markAsDirty存在同样的问题:github.com/angular/angular/issues/11774 我认为您需要做一些解决方法并迭代父对象中的对象属性并在每个控件上使用updateValueAndValidity。唔。如果只在父级上调用它就可以了。
标签: angular typescript angular-reactive-forms angular-forms angular-validation