我正在使用嵌套形式的角度应用程序。主页包含整个页面的提交按钮,每个子组件(包含表单)都需要在父表单中注册,以便验证整个页面正常工作。
为此,我首先尝试在页面组件中添加一个FormArray
并将其传递给随后称为formArray.push(this.formGroup)
的子级。除我得到的ExpressionChangedAfterItHasBeenCheckedError
之外,此方法正常工作。
在阅读错误信息后,我意识到这可能违反了单向数据流的原理,因为子级更新了父级formArray
。
我更新了逻辑,以使子级发出包含其自己的表单组的事件,并且页面侦听这些事件并将子级formGroups
添加到FormArray
。
不幸的是,尽管据我所知单向数据流没有受到侵犯,但这似乎有时仍会导致ExpressionChangedAfterItHasBeenCheckedError
?现在看来,当子组件通过* ngFor初始化时,它可以正常工作,但直接将子组件放在模板中(没有ngI
或ngFor
)会导致异常。
关于为什么可能会发生这种情况的任何想法,还是验证页面上所有嵌套表单的通用方法?