FormControl valueChanges
的可观察效果与应有的相似。就我而言,我需要停止为输入字段中除当前值以外的所有先前更改触发valueChanges
。我一直在尝试使用以下代码来做到这一点-
private getAutocompleteSuggestions(input){
return this.SS.searchProducts(parseInt(this.filter), '', input);
}
private searchSuggestionsAPIRequest(input){
this.queryField.valueChanges
.debounceTime(1000)
.distinctUntilChanged()
.switchMap((input) => this.getAutocompleteSuggestions(input))
.subscribe( res => {
// The res is triggered for all value changes in
// queryField formcontrol
// Tried with following solution to stop emit previous
// changes but it does not work
this.queryField.setValue(input, { emitEvent: false });
});
}
我一直在寻找停止发出先前值的所有可能方法,但是得到了这种解决方案-
this.queryField.setValue(input, { emitEvent: false });
我认为,我在那里缺少一些东西。如果有其他解决方案或文档,那就太好了。
谢谢。
答案 0 :(得分:0)
ValueChange是一个观测值,每次您输入时,它将触发发射。您可以在切换映射中调用api,并使用输入中的最新值将其结果订阅到那里,并保持valueChanges行为不变。
searchBook() {
this.bookId.valueChanges.pipe(
debounceTime(1000),
distinctUntilChanged(),
switchMap(input => {
this.getAutocompleteSuggestions(input)).subscribe(res =>{
//DO you required processing
})
})
).subscribe(model => model);
}