0

这是我的场景

如果值搜索其他清除数据length > 2,我想进行反应搜索。api

但我不知道要清除数据

userList: Observable<User[]>; 

当长度 <= 2 时,userList 应该为空

另一个问题是为什么Rxjs操作员不能在角度 2 中工作?

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));
4

1 回答 1

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 的运算符不能在 angular 2 中工作?

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

此代码不输出任何内容,因为您需要先订阅 observable

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

// or simply

this.userList = this.userNameCtrl.valueChanges
    subscribe(d => console.log(d));
于 2016-12-23T06:55:42.520 回答