【发布时间】:2017-02-12 04:05:11
【问题描述】:
对于我的生活,似乎我应该能够创建一个禁用的 FormArray。我正在尝试使用 1-n 子数组(也是 FormArray)构建一个仅查看的父表单(FormArray)。我将子数组传递给子组件以初始化它们的控件(FormControl)。
我尝试使用不同的选项和生命周期的不同钩子在父窗体上调用disable(),它会抛出这个异常:
表达式在检查后发生了变化。以前的值:“真”。 当前值:'false'。
以下是我尝试过的一些示例:
- 在
ngOnInit中,创建和禁用表单-> 不禁用,抛出异常 - 在
ngOnInit创建表单,在ngAfterViewInit禁用表单-> 禁用但抛出异常
旧版本的表单接受选项对象,并且(遗憾的是)这不再有效,但看起来像:new FormArray({ value: myControlsArray, disabled: true })。
我创建了一个plnkr 来对组件层次结构和表单进行建模。
有人知道如何初始化禁用的表单吗?
编辑(答案):我忽略了一条重要的信息和解决方案的线索。在我的用例中,我采用保存的表单值并初始化一个新的只读表单。与其将保存的表单值传递给子组件,不如创建父表单及其子表单和控件。
【问题讨论】:
-
你不能创建禁用的表单,你应该先创建它然后禁用。
-
@RomanC 我希望我的问题清楚地表明这是我正在使用的当前方法。请注意它导致的更改检测异常。理想情况下,有一种方法可以将表单初始化为禁用状态,但实际上我需要帮助确定在何处/如何调用
disable()方法,这样它就不会触发更改检测。
标签: angular angular2-forms angular2-changedetection