在Form中使用Tab时ExpressionChangedAfterItHasBeenCheckedError

时间:2017-08-23 08:11:53

标签: angular ng-bootstrap

我在表单中有选项卡,包括外部表单的输入字段。 在渲染方面,我收到以下错误:

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

根据Chrome中的堆栈跟踪,以下行有问题:

enter image description here

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

使用plunker复制方案:https://embed.plnkr.co/lZgCb0cyX8TnZ2j8ZE4O

请参阅有关重现错误的评论。

提前致谢!

1 个答案:

答案 0 :(得分:2)

从你的plunker,我看到你混合了"模板驱动的形式"和#34;反应形式"图案。您在输入上同时拥有[(ngModel)]formControlName。当您将绑定到模型的输入值更改为formControl值时,将无效,从而出现错误。

<强> Plunker