【发布时间】:2019-02-15 04:07:22
【问题描述】:
我有一个FormArray,里面有不同的FormControl 项目。
我希望能够听到其中任何一个的更改事件。
我尝试过这样做:
this.form = this.fb.group({
items: this.fb.array([this.fb.control('')])
});
(<FormArray>this.form.get('items')).controls.forEach((control: FormControl) => {
control.valueChanges.subscribe(change => console.log(change));
});
但我似乎从未访问过console.log,尽管我确信子控件正在触发一个更改事件(来自ControlValueAccessor 界面)。
订阅FormArray的子控件更改的方法是什么?
【问题讨论】:
-
如果可能,只需订阅
FormArray上的更改。 // 顺便说一句,您当前的代码看起来应该可以工作 - 您也可以在这里发布模板吗? -
您需要检查表单数组控件的每个控件。因此,例如,如果您将控件作为项目 - (
this.form.get('items')).controls.forEach( control => { control.get('item').valueChanges .debounceTime(100) 。 distinctUntilChanged() .subscribe(value => { this.onChanges(value); }); } ); -
我同意 c69 - 您的代码看起来应该可以工作。检查这个问题和 epsilon 的答案 - 它对我有用:stackoverflow.com/questions/53654938/…
标签: angular typescript formarray