首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在输入元素事件中添加去跳时间,angular10

在输入元素事件中添加去跳时间,angular10
EN

Stack Overflow用户
提问于 2020-10-23 12:02:32
回答 2查看 46关注 0票数 0

我在angular中使用了一个简单的输入。

代码语言:javascript
复制
           <ng-template #searchinput>
              <mat-form-field class="w-100" floatLabel="never">
                <input matInput placeholder="Search" [id]="'search_'+col.columnDef" (input)="searchChange($event.target.value, col.columnDef)">
              </mat-form-field>
            </ng-template>

我想在事件中添加debounceTime。

代码语言:javascript
复制
searchChange(event, colName) {
    console.log(event, colName);
    event.pipe(
      debounceTime(300), 
      distinctUntilChanged())
      .subscribe(value => console.log(value)
    );    
  }

但这不是工作的ERROR TypeError: event.pipe is not a function。我需要一些帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-23 14:10:06

您的event实际上是来自输入字段的值。如果您想添加debounceTime,您必须执行以下操作;

代码语言:javascript
复制
private value$ = new Subject<string>();

ngOnInit() {
  this.input$
    .pipe(
      debounceTime(300),
      distinctUntilChanged()
    )
    .subscribe((input: string) => {
      console.log(input);
    }
}

searchChange(input, colName) {
  this.input$.next(input);
}
票数 1
EN

Stack Overflow用户

发布于 2020-10-23 14:33:53

正确的答案是Marek W的答案。另一种方法是使用FormControl,并将其描述为valueChanges

代码语言:javascript
复制
control=new FormControl();
ngOnInit()
{
 this.control.valueChanges.pipe(
      debounceTime(300),
      distinctUntilChanged()
    )
    .subscribe((input: string) => {
      console.log(input);
    }
}

代码语言:javascript
复制
<input [formControl]="control">
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64493702

复制
相关文章

相似问题

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