RXJS - 如果对来自可观察

时间:2016-07-14 15:44:39

标签: javascript angular reactive-programming rxjs

我已经构建了一个包含自动填充的搜索字段。我正在收听一个可以检测文本字段变化的observable。

this.term.valueChanges
        .debounceTime(300)
        .distinctUntilChanged()
        .filter(query=>query.toString().length>1)
        .subscribe(query => { 

         //Execute search function and populate dropdown menu

        })

当用户搜索字符串时,下拉自动填充列表会填充建议。如果用户随后删除了搜索字符串,我希望删除下拉列表。是否有一个RxJS函数,如果从可观察流生成的值满足特定条件,则可以在订阅之前执行函数?

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

this.term.valueChanges
    .debounce(100)
    .distinctUntilChanged()
    .do(() => /* close list here */)
    .where(val => val.length > 1)
    .select(query => ({ 
        query: query, 
        completions: completions
            .filter(w => w.indexOf(query.toLowerCase()) !== -1)
    }))
    .subscribe(r => {
        /*
         * r.query          contains the current search word
         * r.completions    contain the completions for that word
         */
    });

JSFiddle

上运作基本示例