如果输入Y获得值则禁用输入X时无限循环,反之则为2

时间:2017-03-02 22:49:04

标签: angular reactive-forms

我有一个带有angular2的反应形式。 我有两个文本输入元素,每个元素都有自己的valueChange函数。 在此,如果存在非emtpy值,则禁用另一个输入,否则启用另一个输入,这将触发另一个输入中的更改事件,从而生成无限循环。我该如何解决?

代码是这样的:

this.myForm.get('inputX').valueChages.subscribe(val => {
 if(val && val.trim().length > 0) {
  this.myForm.get('inputY').disable(); // this triggers a change in inputY
 } else {
  this.myForm.get('inputY').enable(); // this triggers a change in inputY
 }
})
this.myForm.get('inputY').valueChages.subscribe(val => {
 if(val && val.trim().length > 0) {
  this.myForm.get('inputX').disable(); // this triggers a change in inputX
 } else {
  this.myForm.get('inputX').enable(); // this triggers a change in inputX
 }
})

我的解决方法是在禁用或禁用之前检查每个元素的状态,从而不尝试禁用和已禁用元素,也不启用已启用的元素。 有没有更清洁/更简单的方法呢?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用emitEvent: false

this.myForm.get('inputY').disable({emitEvent: false});