2017-03-02 53 views
1

获取值,反之亦然我有angular2反应性形式。 我有两个文本输入元素,每一个都有自己的valueChange功能。 在此,如果有一个非emtpy值的另一输入端被禁止,否则启用,并且这触发一个改变事件中的另一输入,产生一个无限循环。我该如何解决这个问题?无限循环禁用输入X时,如果输入的Y角度2

代码是这样的:

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 
} 
}) 

我解决它,禁用或enbabling,因此不会试图禁用和已禁用的元素,也不启用已启用元素之前,检查每个元素的状态的方式。 是否有这样做的更清洁/更简单的方法?

回答

2

你可以尝试用emitEvent: false

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