首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular:所有更改的FormControl valueChanges可观察触发器

Angular:所有更改的FormControl valueChanges可观察触发器
EN

Stack Overflow用户
提问于 2019-07-02 11:55:50
回答 1查看 1.1K关注 0票数 0

FormControl valueChanges Observable的工作方式与其应有的方式相同。在我的例子中,除了当前值之外,我需要停止为输入字段中以前的所有更改触发valueChanges。我一直在尝试使用下面的代码来做到这一点-

代码语言:javascript
复制
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 });

    });
} 

我一直在寻找所有可能的方法来停止释放以前的值,但得到了这个解决方案-

代码语言:javascript
复制
this.queryField.setValue(input, { emitEvent: false });

我想,我遗漏了一些东西。如果有任何进一步的解决方案或文档,那就太好了。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-07-02 13:05:58

ValueChange是一个观察值,每次你输入的时候,它都会触发发射。您可以在switch map中调用您的api,并使用来自输入的最新值将其结果订阅到那里,并保持valueChanges行为不变。

代码语言:javascript
复制
searchBook() {
    this.bookId.valueChanges.pipe(
      debounceTime(1000),
      distinctUntilChanged(),
      switchMap(input => {
        this.getAutocompleteSuggestions(input)).subscribe(res =>{
          //DO you required processing
        })
      })
    ).subscribe(model => model);
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56845106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档