Angular 2+:如何订阅白名单字段的表单值变更?

时间:2018-04-20 14:19:16

标签: javascript angular angular2-forms

我有大型,并希望聆听 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
});

有什么想法吗?谢谢!

2 个答案:

答案 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
});

当然,您可以通过侦听所需的特定字段来执行相反的操作。