我有一个 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 个不同的过滤器呢?
我错过了满足我需求的任何方法吗?
提前致谢!