在表单中使用 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 的输入值时,值无效,因此会出现错误。
我在表单内有选项卡,包括来自外部表单的输入字段。 在渲染侧面时出现以下错误:
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 的输入值时,值无效,因此会出现错误。