2017-03-02 52 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});