【问题标题】:angular (form array) value changes is not working角度(表单数组)值更改不起作用
【发布时间】:2020-10-04 18:49:44
【问题描述】:

表单数组值更改不起作用。我无法控制订阅者方法中的值。 下面是我的基本表单数组代码。

ordersData = [
 { id: 100, name: 'order 1' },
 { id: 200, name: 'order 2' },
 { id: 300, name: 'order 3' },
];

this.formGroup = this.formBuilder.group({
      testControl: this.formBuilder.array([])
  });

 get formGroupControl() {
    return (this.formGroup.get('testControl') as FormArray);
  }

 private addFormControl() {
    this.ordersData.forEach((o, i) => {
      (this.formGroup.get('testControl') as FormArray).controls.push(this.formBuilder.control(''));
    });
  }

我在 ngOnInit() 中调用了这个 addFormControl() 函数,如果我尝试使用以下方式查看 valuechanges

this.formGroup.get('testControl').valueChanges.subscribe(value => {
      console.log('log', {value});
    });

这个控制台不工作.. 教我正确处理表单数组的方法

【问题讨论】:

  • valueChangessn-p 放在哪里?
  • 我认为添加表单控件不会触发值更改。只有当控件的值发生变化时才会发生。
  • valueChange 放置在 ngOninit 中,是的,当我尝试更改值时,不会触发 valueChange。我没有只添加formControl。你可以看到值在 orderData 中
  • orderData 是一个对象数组,您使用它来添加与其长度一样多的表单控件。稍后,您是从 UI 还是以编程方式更改添加的表单控件的任何值?

标签: javascript angular-forms formarray angular-formbuilder


【解决方案1】:

我遇到了同样的问题(我认为),通过 formArray.controls.push 添加到 formArray 的表单不起作用,我改用 formArray.push 修复了

【讨论】:

  • 你拯救了我的一天!现在有道理了,添加到控件数组实际上并没有将值更改事件挂钩。
猜你喜欢
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 2013-10-04
  • 1970-01-01
相关资源
最近更新 更多