【问题标题】:FormGroup.patchValue keep disabled state of child controlsFormGroup.patchValue 保持子控件的禁用状态
【发布时间】:2018-06-18 19:52:48
【问题描述】:

我有一个带有禁用表单控件的反应式FormGroup 实例。 表单控件之一上的 valueChanges 侦听器设置其他控件disabled

每次我将表单的值保存到后端时,都会返回一个更新的对象,并使用patchValue 将其修补回表单中。 不幸的是,在将新对象从后端修补到表单组后,所有控件的禁用状态都丢失了。

  1. 我在初始化时创建了 FormGroup
  2. 用户输入的一些值(例如 URL)会导致其他表单控件被禁用。
  3. 我保存了表单的值
  4. 我从后端收到更新的对象
  5. 我将更新的对象修补到表单中。
  6. 之前禁用的表单控件再次启用。

使用patchValue后如何保持表单控件的禁用状态?

【问题讨论】:

  • 您知道(或后端知道)应该禁用哪个控件的标志是什么?
  • 这些控件在保存之前已经被禁用(因此修补)。我只是希望控件保持禁用状态。
  • 如果您提交form.valuedisabled 控件将从表单中完全消失。当您使用Form Builder 构建表单时,您需要有某种标志(可以像相应控件的属性是否具有值一样简单)来检查
  • 我在初始化时只构建一次FormGroup。

标签: angular angular-reactive-forms


【解决方案1】:

我找到了一个(肮脏的)解决方法。

我在.subscribe 块之前添加了.debounceTime(0),并且在我将新值修补到表单中之后,复选框会暂时启用,但会立即再次禁用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多