【问题标题】:Angular 2 Dynamic form change generates exception "expression has changed"Angular 2动态表单更改生成异常“表达式已更改”
【发布时间】:2016-12-12 10:19:09
【问题描述】:

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

结果将与此类似: Mock of desired result

用户必须选择文件、文件类型、描述并满足所需的元数据。 之后他就可以提交文件了。

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

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

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

但错误仍然发生。

有什么帮助吗? 提前谢谢你

【问题讨论】:

  • 你试过detectChanges方法而不是markForCheck吗?

标签: angular angular2-forms dynamicform


【解决方案1】:

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

“检查后表情发生了变化”表示有东西在angular的眼睛之外。

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

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

【讨论】:

  • 也就是说,在处理了一些问题之后,我们决定不使用将属性绑定到模板。
猜你喜欢
  • 2017-07-28
  • 2016-10-19
  • 2017-05-08
  • 1970-01-01
  • 2017-06-26
  • 2017-06-17
  • 2017-07-08
  • 2017-03-26
  • 1970-01-01
相关资源
最近更新 更多