我正在使用函数'valuechanges'的输入字段上的更改,当我编写诸如" abc"之类的任何内容时,但是,当我删除文本时,会提高错误函数,然后当我再次写任何东西" Valuechanges"不发射时,这是示例:
this.searchForm.controls.SearchValue.valueChanges
.debounceTime(1000)
.switchMap(term => this._http
.get(CONFIG.API_ENDPOINT + `/folders/search/` + term))
.subscribe(
(result) => {
this.searchResult = result;
},
(err) => {
console.log(error);
})
我需要知道发生了什么?
可观察到的工作方式以某种方式停止发射值,一旦完成或发生错误。
this.searchForm.controls.SearchValue.valueChanges
.debounceTime(1000)
.filter(val => val)
.switchMap(term => {
return this._http.get(CONFIG.API_ENDPOINT + `/folders/search/` + term)
.catch(err => {
console.log(err);
return Observable.empty()
})
})
.subscribe(result => {
this.searchResult = result;
})
您可以在此处使用代码:https://stackblitz.com/edit/angular-http-r1qe3z(输入数字(。该视频非常有帮助:https://www.youtube.com/watch?v=3lkmwkuk0ze26:20是解释的地方。
this.searchForm.controls.SearchValue.valueChanges
.debounceTime(1000)
.filter(term => !(term === null || term === ''))
.switchMap(term => this._http
.get(CONFIG.API_ENDPOINT + `/folders/search/` + term))
.subscribe(
(result) => {
this.searchResult = result;
},
(err) => {
console.log(error);
})