角2 |

2017-05-03 6 views
0

JavaScriptの値を変更した後、入力フィールドにRXjsのdistinceUntilChangedに問題があります。角2 |

再現手順:入力した結果として

  1. セットテキスト削除ボタンの "" 入力内部

  2. クリックは>>、空ではJavaScriptを使用して

  3. 入力内で再び "a"を設定する
  4. 削除ボタンをもう一度クリックします。入力は「a」の値のままです

「a」とは別の値を挿入すると機能します。 もちろん、observableからdistinceUntilChangedを削除しても、それもうまくいきます。

コードスニペット:

@Component({ 
selector: 'app', 
template: ` 
     <input #input [value]="value ? value : ''" (input)="filter$.next(input.value)"> 

     {{val}} 
     <div> 
      <button (click)=remove()>Remove</button> 
     </div> 
    ` 
    }) 

export class App { 

    filter$ = new Subject(); 
    val:string; 
    value:string; 

    constructor() { 

    } 

    ngOnInit(): void { 
    this.filter$ 
    .distinctUntilChanged() 
    .subscribe((value) => { 
     this.val = value; 
     this.value = value; 
    })); 
    } 

    remove(){ 
    console.log('test'); 
    this.value = ""; 
    this.val = ""; 
    } 

} 

私は私の問題でPlunker例を作成しました:

答えて

1

あなただけの表示のテキストを変更しているためです。削除機能は次のようになります:

remove() { 
    this.filter$.next("") 
}