Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如果表单不断更新,如何实现重置的自动保存_Angular - Fatal编程技术网

Angular 如果表单不断更新,如何实现重置的自动保存

Angular 如果表单不断更新,如何实现重置的自动保存,angular,Angular,我正在构建一个Angular 9应用程序。 在这个应用程序中,我得到了一个反应式表单。我想在上次更改表单字段3秒钟后将此表单自动保存到服务器 但是如果用户继续键入以避免应用程序向服务器发送不必要的更新,我希望这3秒钟的延迟能够重新启动 这是我现在使用的代码,它可以工作,但即使用户继续键入,它也会发送 this.form.valueChanges.pipe(auditTime( 3000 )).subscribe(() => { if (this.form.valid &

我正在构建一个Angular 9应用程序。 在这个应用程序中,我得到了一个反应式表单。我想在上次更改表单字段3秒钟后将此表单自动保存到服务器

但是如果用户继续键入以避免应用程序向服务器发送不必要的更新,我希望这3秒钟的延迟能够重新启动

这是我现在使用的代码,它可以工作,但即使用户继续键入,它也会发送

this.form.valueChanges.pipe(auditTime( 3000 )).subscribe(() => {
      if (this.form.valid && this.form.dirty) {
        this.submitFormBlock();
      }
    });

我建议您将
debounceTime
distinctUntilChanged
一起使用,如下所示:

this.form.valueChanges
.烟斗(
debounceTime(3000),//每3000毫秒发生一个事件
distinctUntilChanged(),//仅当当前值与上一个值不同时才会发出
)
.订阅(()=>{
if(this.form.valid&&this.form.dirty){
这个.submitFormBlock();
}

});也许去BounceTime是这里的一个选项?也许!它能做什么?它确实能做你想要的——延迟最后一次发射,直到没有其他发射。它能在一定时间内消除变化。阅读更多:似乎工作!非常感谢。