在表单中使用 Tab 时出现 ExpressionChangedAfterItHasBeenCheckedError

ExpressionChangedAfterItHasBeenCheckedError when using Tab inside a Form

我在表单内有选项卡,包括来自外部表单的输入字段。 在渲染侧面时出现以下错误:

ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'false'. Current value: 'true'.

根据 Chrome 中的堆栈跟踪,以下行是错误的:

我猜这个错误与angular变化检测机制和组件树有关。如果表单的输入字段放在选项卡之前,并且选项卡不包含属于外部表单的表单元素,则不会出现 ExpressionChangedAfterItHasBeenCheckedError。也许检测到的更改值是表单的有效性。

带 plunker 的再现场景:https://embed.plnkr.co/lZgCb0cyX8TnZ2j8ZE4O

查看重现错误的评论。

提前致谢!

从你的 plunker 那里,我看到你混合了 "template driven forms" 和 "reactive forms" 模式。您在输入上同时有 [(ngModel)]formControlName。当您更改绑定到模型 formControl 的输入值时,值无效,因此会出现错误。

Plunker