当前位置: 首页 > 知识库问答 >
问题:

去抖以获得angular2中的值输入

吴开宇
2023-03-14
<md-card-title *ngIf="!edit">{{card.title}}</md-card-title>
 <input *ngIf="edit" type="text" [(ngModel)]="card.title" (ngModelChange)='rename()'/>
js prettyprint-override">newTitle: string;
modelChanged: Subject < string > = new Subject < string > ();

constructor()
this.modelChanged
  .debounceTime(500) //before emitting last event
  .distinctUntilChanged()
  .subscribe(model => this.newTitle = model);
}

rename(): void {
  this.renameRequest.emit(this.newTitle);
}

共有1个答案

邓高韵
2023-03-14

嗯,有很多方法可以实现这一点,但这里有一个方法:

<input *ngIf="edit" type="text" #input="ngModel" [(ngModel)]="card.title" (ngModelChange)='rename()'/>

在你的班级里

newTitle : string;
@ViewChild('input') input;
constructor()

}

ngAfterViewInit(){
       this.input.valueChanges
             .pipe(debounceTime(500)) before emitting last event
             .pipe(distinctUntilChanged())
             .subscribe(model => (value)=>{
                   console.log('delayed key press value',value);
                    this.rename(value)
              });

}

rename(value): void {
    this.renameRequest.emit(value);
}

这是柱塞

ngAfterViewInit(){
       this.input.update // this is (modelChange)
             .pipe(debounceTime(500)) before emitting last event
             .pipe(distinctUntilChanged()) 
             .subscribe(model => (value)=>{
                   console.log('delayed key press value',value);
              });

}
 类似资料:
  • 组件如下: 以下是规范: 我肯定我错过了一些基本的/简单的东西,但我花了过去一天的时间梳理了所有我能找到的东西,没有运气。

  • 问题 你想只执行某个函数一次,在开始或结束时把多个连续的调用合并成一个简单的操作。 解决方案 使用一个命名函数: debounce: (func, threshold, execAsap) -> timeout = null (args...) -> obj = this delayed = -> func.apply(obj, args) unless exe

  • 组件: 表单: 该函数更新一个JSON记录。例如,它用“fname”ng model更新“firstName:”条目。问题是,除非用户修改输入的值,否则ngModel被读取为null,即使已经存在< code > value = " { { current user . first name } } " 的值。 如何设置 ngModel 以从实际输入的值其值?

  • 问题内容: 我正在制作动态表格。一个有值的列表。每个值由一个字符串表示。 我的组件中有一个函数,可以向该字段添加新值。 值和按钮在我的HTML中这样显示。 一旦我在值的输入中写入一些文本,输入就会失去焦点。如果我在一个字段中添加了多个值,并且在一个输入值中写入了一个字符,则该输入将失去焦点,并且该字符将写入每个输入中。 问题答案: 当数组是原始类型(在您的情况下是数组)时,会发生这种情况。这可以通

  • 问题内容: 在AngularJS中,我可以通过使用ng-model选项来反跳模型。 如何在Angular中对模型进行反跳?我试图在文档中搜索反跳,但找不到任何东西。 一种解决方案是编写我自己的防抖动功​​能,例如: 和我的HTML 但是我正在寻找一个内置函数,Angular中有一个吗? 问题答案: 针对RC.5更新 使用Angular 2,我们可以在窗体控件的可观察对象上使用RxJS运算符进行反跳