0

我正在尝试动态生成一个复杂的嵌套表单,但我无法让它工作。

结果将类似于以下内容: Mock of desired result

用户必须选择文件、文件类型、描述并满足所需的元数据。之后,他将能够提交文件。

问题是,当我动态生成表单时,我得到:“表达式在检查后发生了变化。以前的值:'true'。当前值:'false'。”

我正在尝试对构建表单的部分强制进行更改检测,如下所示:

this.metadataForm = this.docMetService.toFormGroup(this.metadataDefinitions);
this.changesDetector.markForCheck();

但错误仍然发生。

有什么帮助吗?先感谢您

4

1 回答 1

0

让我猜猜。您在某处访问控件的有效属性,该属性最初是有效的,因为您可能尚未加载会更改有效性的表单部件。

“检查后表情发生了变化”意味着有东西在角度的眼睛之外。

要解决此问题,请尝试从模板中删除该有效性检查,然后进行测试以查看一切正常。

然后,只是为了测试,将创建所有动态表单块的主要方法放在 setTimeout 中(这有助于 angular 重新运行 cd),最后运行 cd.detectChanges。

于 2016-12-12T10:41:31.750 回答