首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >形状ValueChanges中的角去跳

形状ValueChanges中的角去跳
EN

Stack Overflow用户
提问于 2020-10-16 09:24:00
回答 1查看 631关注 0票数 1

我有一个名为filteredUserNames的列表,其中包含了很多用户。每次更改表单上的值时,它都会启动数据的新筛选器。我知道为了延迟时间,这样不是每个字符都会触发一个新的筛选器,我需要使用减法,但我不知道该在哪里添加它。它应该在值更改订阅中吗?另外,实现它的正确方法是什么?

我有过

代码语言:javascript
复制
searchString = new BehaviorSubject("");
searchString$ = this.searchString.asObservable();

在构造器中

代码语言:javascript
复制
this.myForm = this.fb.group({
  searchString: [""],
});
this.myForm.controls.searchString.valueChanges.subscribe((val) => {
// SHOULD THE DEBOUNCE GO HERE ?? //  
this.searchString.next(val);  
}

在ngOnInit中

代码语言:javascript
复制
this.searchString$.subscribe((searchTerm) => {
      console.log(this.userNames);
      if (this.userNames !== undefined) {
      this.filteredUserNames = this.userNames.filter(
        (userName) =>
          userName.searchTerms
            .toLowerCase()
            .indexOf(searchTerm.toLowerCase()) !== -1
      );
      };
    });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-16 09:28:17

尝试这样做,您可以添加distinctUntilChanged来忽略类似的值,并为您的副作用添加点击操作符,在您的情况下,这将向behaviorSubject发出一个新的值。

代码语言:javascript
复制
import { tap, distinctUntilChanged, debounceTime} from 'rxjs/operators';
...

this.myForm.controls.searchString.valueChanges.pipe(
   debounceTime(400),
   distinctUntilChanged(),
   tap((val) => this.searchString.next(val))    
 ).subscribe()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64386427

复制
相关文章

相似问题

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