2017-05-03 68 views
0

在更改JavaScript值後,我在輸入字段中遇到了RXjs'distinceUntilChanged問題。Angular 2 | RXjs在更新視圖後出現distinctUntilChanged問題

重現步驟:

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