Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Angular 2中使用Observable时防止http调用?_Angular_Rxjs - Fatal编程技术网

如何在Angular 2中使用Observable时防止http调用?

如何在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)的功

几个示例演示了如何使用observables连接控件以显示从http后端获取的数据,例如:

在某些情况下,您能阻止http调用吗?例如,在上面提到的文章中有一个自动完成字段——如果用户清除该字段,有没有办法阻止http调用

我尝试过修改switchMap函数,例如:

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使用空数组清除列表。