【发布时间】: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