【问题标题】:Parent is not passing form values to CVA child form group父级未将表单值传递给 CVA 子表单组
【发布时间】:2022-12-12 22:16:45
【问题描述】:

我有一个 Angular 15 应用程序(请参阅 Stackblitz 上的源代码),它使用反应式表单和 ControlValueAccessor 模式来创建包含子表单组的父表单。当我添加一个表单组并在父 html 模板中将其注释为 FormGroup 时,数据不会传递给子项。当我将其注释为 FormControl 时,它正在正确传递和访问子表单的数据,但出现错误

错误错误:control.registerOnChange 不是函数

此外,如果我将其注释为 FormControl,我将无法访问 FormGroup 内的各个控件。

在代码示例中childGroupForm2收到传递的值但是子组窗体才不是。

我的最佳解决方案是将 FormGroup 注释为 FormGroup 并将值从父组件传递给子组件。

有谁知道为什么这不适用于 FormGroups 但适用于 FormControl?

【问题讨论】:

  • 此处也包含最少的代码。链接可能会中断

标签: javascript angular typescript angular-forms angular-formbuilder


【解决方案1】:

在您的父组件中,您将 formgroup 传递给 formgroup aka childGroupForm 应该是表单(而不是组):

ngOnInit() {
    this.parentForm = this.fb.group({
      name: 'Test0',
      childGroupForm: this.fb.group({ //change this.fb.group to this.fb.control
        elementInput: 'Test1',
        elementsSelectionInput: 'Test2',
      }),
      childGroupForm2: this.fb.group({  //change this.fb.group to this.fb.control
        elementInput: 'Test3',
        elementsSelectionInput: 'Test4',
      }),
    });
  }

编码愉快!

【讨论】:

  • 但是我无法访问 childGroups 的控件,对吗?我只会得到一个 FormControls-Object,它不包含控件属性
猜你喜欢
  • 2021-05-21
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 2019-11-20
  • 2018-08-11
  • 1970-01-01
相关资源
最近更新 更多