0

我正在尝试创建(我认为的)是当前项目的基本调度程序组件。

编辑:我找到了自己的解决方案,下面提供了答案。解决选择所有功能的任何帮助的奖励,我暂时搁置了:)

tldr;

问题:为什么如果我传入一个禁用的行,启用它并开始编辑,该行会被禁用?如果我启用所有行 OnInit,一切都会按预期工作。

编辑器 StackBlitz:Angular FormArray 表的编辑器 StackBlitz

App StackBlitz:用于 Angular FormArray 表的 App Stackblitz


目标是允许用户选择和/或取消选择表单中的特定日期或时间范围。如果选择了该列或行,则其元素将切换其“活动”状态。

所以,我切换了周日栏和晨间行。只有与星期日和早上时间范围有关的值才会有效。

我正在使用 *ngIf 或 hidden 向用户隐藏元素,因此他们无法编辑。如果表单输入处于活动状态,那么他们可以查看它并编辑该字段。

但是,当我使用不活动的行初始化表单时,问题就出现了。因此,我让 Morning Row 处于活动状态 ngOnInit,然后用户可以在状态初始化后切换行。

当这些禁用的行被启用并且用户开始编辑时,该行的活动状态禁用。这就是我感到困惑的地方。我在杂草中,我似乎无法找到问题所在。

4

1 回答 1

0

调试后,我已经解决了我的问题。对于遇到类似用例的任何人,我的解决方案涉及我如何在切换 FormControl 的值时设置活动状态。

以前我是通过 Angular 的 getter 函数来切换活动值:

[FormControl].value.[ActiveFormField] = !active_state

这没有更新表单的正确值。

相反,我需要这样设置值:

[FormControl].value.[ActiveFormField].setValue(!active_state).

通过设置该值,表单随后被正确更新,并且我的切换状态按预期执行。


我还清理了for-loops我引用的嵌套;但是,我仍然需要处理全选并取消选择所有状态。

于 2018-04-14T13:18:08.313 回答