2017-03-02 32 views
1

私はangular2で反応する形をしています。 私は2つのテキスト入力要素を持ち、それぞれに独自のvalueChange関数を持っています。 この場合、もう一方の入力はemtpy値でない場合は無効になり、そうでない場合は有効になり、もう一方の入力で変更イベントがトリガされ、無限ループが生成されます。それをどうすれば解決できますか?入力Yが値2の場合に入力Xを無効にする場合の無限ループ

コードは次のようなものです:ので、すでに有効になって要素を有効にするも、すでに無効になっ要素を無効にしようとしていない、無効にしたりenbabling前に、各要素の状態をチェックして、それを解決する

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

マイウェイ。 これを行うクリーナー/シンプルな方法がありますか?

答えて

2

あなたはemitEvent: false

this.myForm.get('inputY').disable({emitEvent: false}); 
と試みることができます
関連する問題