如何在Angular 2中使用Observable时防止http调用?
几个示例演示了如何使用observables连接控件以显示从http后端获取的数据,例如: 在某些情况下,您能阻止http调用吗?例如,在上面提到的文章中有一个自动完成字段——如果用户清除该字段,有没有办法阻止http调用 我尝试过修改switchMap函数,例如:如何在Angular 2中使用Observable时防止http调用?,angular,rxjs,Angular,Rxjs,几个示例演示了如何使用observables连接控件以显示从http后端获取的数据,例如: 在某些情况下,您能阻止http调用吗?例如,在上面提到的文章中有一个自动完成字段——如果用户清除该字段,有没有办法阻止http调用 我尝试过修改switchMap函数,例如: if(term.length < 1) { return Observable.empty(); } else { // call the http service... if(术语长度term.length>0)的功
if(term.length < 1) {
return Observable.empty();
}
else { // call the http service...
if(术语长度<1){
return-Observable.empty();
}
否则{//调用http服务。。。
它确实阻止了呼叫,但将以前的结果保留在控件上。对不起,我在移动设备上,但类似于
filter(term=>term.length>0)
的功能应该可以实现
评论后更新
也许有更优雅的方式来处理这个问题,但是这个呢
this.items = this.term.valueChanges
.debounceTime(400)
.distinctUntilChanged()
.switchMap(term => term.length > 0
? this.wikipediaService.search(term)
: Observable.of([]));
工作plunkr:这确实阻止了调用,但不会删除现有列表。很棒的解决方案!假设我需要一个完整的函数而不是一行=>,我如何返回要订阅的原始可观察对象?请参阅:您很接近。
可观察。空的
创建和可观察对象
,永远不会激发。您需要一个激发w使用空数组清除列表。