2016-12-23 64 views
0

反應搜索之前的一些清理這裏是我的方案RxJS:如何做角2

我想反應搜索 如果該值length > 2api搜索 其他明確的數據。當長< = 2

另一個問題是,爲什麼Rxjs做運營商沒有角2工作

但我不知道明確數據

userList: Observable<User[]>; 

的用戶列表是空的?

this.userList = this.userNameCtrl.valueChanges.do(d => console.log(d)); 

這裏是我的代碼:

this.userList = this.userNameCtrl.valueChanges 
      .filter(x => x.length > 2) 
      .debounceTime(400) 
      .distinctUntilChanged() 
      .switchMap(value => this._userService.searchUsers(value)); 
+1

你所說的「清除數據」是什麼意思?哪些數據?當你說「do」操作符不起作用時,你是什麼意思?你甚至沒有顯示你是如何嘗試使用它的。 – cartant

+0

'do'適合Angular2使用 –

+0

userList:Observable ;當長度<= 2時,userList應該是空的。 –

回答

1

我想反應搜索如果值長度> 2做API搜索其他明確的數據。

如果我通過清除你的意思是推空數組到流正確理解:

this.userList = this.userNameCtrl.valueChanges 
    .debounceTime(400) 
    .distinctUntilChanged() 
    .switchMap(value => { 
     if(value.length > 2) { 
      return this._userService.searchUsers(value); 
     } else { 
      return Observable.of([]); 
     } 
    }); 

另一個問題是,爲什麼Rxjs做運營商沒有角2工作?

this.userList = this.userNameCtrl.valueChanges.do(d => console.log(d)); 

這個代碼不輸出任何東西,因爲你需要訂閱可觀察到的第一

this.userList = this.userNameCtrl.valueChanges 
    .do(d => console.log(d)) 
    subscribe(() => {}); 

// or simply 

this.userList = this.userNameCtrl.valueChanges 
    subscribe(d => console.log(d)); 
+0

嗨Sergev 非常感謝。它現在有效。 我以爲做訂閱運營商,我錯了。 –