0

我有一个巨大的模型驱动表单,它的字段可能会影响彼此的行为,例如:

如果字段 A 的值发生变化,则应从服务器获取字段 B 的值,或者如果字段 C 的值发生变化,则应禁用字段 D 等。

为了检测我使用valueChanges的变化:

this.form.controls['a'].valueChanges.subscribe(data=>{
    //do some staff
});
this.form.controls['b'].valueChanges.subscribe(data=>{
    //do some staff
});
.
.
.

(请注意,我不能说this.form.valueChanges,因为我的表单有大约 50 个字段)。一切看起来都很好,但这种方法让我ngOnInit()有点乱。我的问题是:

对于这种情况,有没有更好/更有效的解决方案?在 ngOnInit 中订阅过多的 observables 不会产生任何问题?如何改进我的代码?

4

1 回答 1

1

event binding在模板上使用 angular 会更干净。将其与ngModel双向数据绑定相结合,它可以使您的组件代码更加简洁。

例如:

<input type="text" formControlName="a" [(ngModel)]="inputValue" (change)="doSomething($event)">

您可以event binding在 Angular2 中为 DOM 事件执行change, click,keyupblur

编辑:

  • change仅在单击输入文本框外部时触发。
  • keyup相比,是更好的选择change

请参阅此Plunk以比较差异。

于 2017-01-24T10:40:15.760 回答