角度:FormControl valueChanges所有更改的可观察触发器

时间:2019-07-02 03:55:50

标签: angular input autosuggest

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 });

我认为,我在那里缺少一些东西。如果有其他解决方案或文档,那就太好了。

谢谢。

1 个答案:

答案 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);
   }