gpt4 book ai didi

angular - 去抖动以获取angular2中的值输入

转载 作者:太空狗 更新时间:2023-10-29 17:52:06 24 4
gpt4 key购买 nike

我想在 Angular 2 中的一段时间(许多毫秒或几秒)后从输入文本中获取一个值,当自定义写入输入但不等待他单击按钮时。

我试过了,但即使我使用 debounceTime,每次按键都会发送值。

我尝试了解 debounce 和 observable,这就是我的理解,任何人都可以帮助我修复我的代码:

组件.html:

<md-card-title *ngIf="!edit">{{card.title}}</md-card-title>
<input *ngIf="edit" type="text" [(ngModel)]="card.title" (ngModelChange)='rename()'/>

component.ts

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

最佳答案

好吧,有很多方法可以实现这一点,但这是一种方法:

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

这是 Plunker

您甚至可以像下面那样订阅 modelChange :

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

}

关于angular - 去抖动以获取angular2中的值输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43998536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com