我有大型,并希望聆听 5 特定字段的更改。
我可以听完整个表格:
this.form.valueChanges.subscribe(data => {
// do something, because any field changed
});
或单个字段:
this.form.get('my_single_field').valueChanges.subscribe(data => {
// do something, because my_single_field changed
});
所需
但我希望有类似的东西:
this.form.get(['field1', 'field5']).valueChanges.subscribe(data => {
// do something, because field1 or field5 changed
});
或:
this.form.valueChanges.subscribe(data, changedField => {
// do something, because changedField changed
});
有什么想法吗?谢谢!
答案 0 :(得分:2)
修改强>
您可以在Form上添加以下函数作为原型。
<强>上强>:
使用rxjs中的merge。功能应该是这样的。
listenChangesOn(form,['field1','field2']).subscribe(a=>..)
可以使用
{{1}}
答案 1 :(得分:0)
我遇到了类似的问题。我想听除一个字段之外的整个表单,然后像您一样通过听整个表单来解决问题,并在观察者函数中放一个条件询问该字段是否被触摸。会是这样的:
this.form.valueChanges.subscribe(data => {
if (this.form.controls['field1'].touched) return;
// do something, because any other field changed
});
当然,您可以通过侦听所需的特定字段来执行相反的操作。