Angular 2 动态表单更改产生异常"expression has changed"
Angular 2 Dynamic form change generates exception "expression has changed"
我正在尝试动态生成一个复杂的嵌套表单,但我无法让它工作。
结果将与此类似:
Mock of desired result
用户必须 select 一个文件,它是什么类型的文件,描述并满足所需的元数据。
之后他就可以提交文件了。
问题是,当我动态生成表单时,我得到:"Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'."
我正在尝试对构建表单的部分强制进行更改检测,如下所示:
this.metadataForm = this.docMetService.toFormGroup(this.metadataDefinitions);
this.changesDetector.markForCheck();
但是还是报错。
有什么帮助吗?
提前谢谢你
让我猜猜。
您在某处访问控件的有效 属性,这最初是有效的,因为您可能没有加载会更改有效性的表单部分。
"Expression has changed after it was checked" 表示有东西在 angular 的眼睛之外。
要解决此问题,请尝试从您的模板中删除有效性检查,然后进行测试以查看一切是否正常。
然后,为了测试,将创建所有动态表单块的主要方法放在 setTimeout 中(这有助于 angular 重新 运行 cd)并在最后 运行一个cd.detectChanges.
我正在尝试动态生成一个复杂的嵌套表单,但我无法让它工作。
结果将与此类似: Mock of desired result
用户必须 select 一个文件,它是什么类型的文件,描述并满足所需的元数据。 之后他就可以提交文件了。
问题是,当我动态生成表单时,我得到:"Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'."
我正在尝试对构建表单的部分强制进行更改检测,如下所示:
this.metadataForm = this.docMetService.toFormGroup(this.metadataDefinitions);
this.changesDetector.markForCheck();
但是还是报错。
有什么帮助吗? 提前谢谢你
让我猜猜。 您在某处访问控件的有效 属性,这最初是有效的,因为您可能没有加载会更改有效性的表单部分。
"Expression has changed after it was checked" 表示有东西在 angular 的眼睛之外。
要解决此问题,请尝试从您的模板中删除有效性检查,然后进行测试以查看一切是否正常。
然后,为了测试,将创建所有动态表单块的主要方法放在 setTimeout 中(这有助于 angular 重新 运行 cd)并在最后 运行一个cd.detectChanges.