【发布时间】:2016-06-27 15:22:42
【问题描述】:
我有一个 Observable 可以监听来自文本框的一些用户输入。如果观察到的字符串长度 >=3 (filter),它将执行一些 HTTP 调用 (switchMap)。
现在我想以某种方式检测用户输入是否已被过滤。原因:
如果 HTTP 调用已经完成,它应该会显示结果。
如果用户输入被过滤(== 无效),它应该清除结果。
这是我想要的代码(请参阅:ifFiltered):
this.userInput.valueChanges
.filter(val => val && val.length >= 3)
.ifFiltered(() => this.results = [])
.switchMap(val => getDataViaHTTP())
.subscribe(val => this.results = val);
我知道,对于这个简单的示例,我可以将该逻辑放在 filter 函数中。但是如果我有 10 个不同的过滤器呢?
我是否错过了任何满足我需求的方法?
提前致谢!
【问题讨论】:
标签: filter angular rxjs observable rxjs5