我自动完成搜索。
keypress(valueSearch){
// call Ajax search with ValueSearch
// ....
}
每次按键事件,我都想取消旧的http请求。
答案 0 :(得分:2)
实际上你需要依赖从事件中创建的observable。如果使用默认事件绑定,则无法访问此可观察对象。关于这个问题存在未解决的问题:
现在你需要用@ViewChild
装饰器引用元素并在其上配置一个observable:
@ViewChild('someElt')
someElt: ElementRef;
ngAfterViewInit() {
Observable.fromEvent(someElt.nativeElement, 'keyup');
}
现在,您可以利用switchMap
运算符来对其进行HTTP请求。如果数据流中有正在进行的请求,它将被取消:
@ViewChild('someElt')
someElt: ElementRef;
ngAfterViewInit() {
Observable.fromEvent(someElt.nativeElement, 'keyup').switchMap((evt) => {
return this.http.get('something').map(res => res.json())
}).subscribe(data => {
// use data
});
}