我有很多页面,上面有很多表格。我想创建一个服务来监视此表单。该表单绑定到具有大量属性的数据模型对象。我尝试使用名为watchjs的库观看数据模型对象,但这在浏览器内存上太繁琐了。我希望能够在用户停止输入时收听更改,以便60秒后我可以警告他/她更改将被保存。
谢谢。
答案 0 :(得分:1)
根据您的描述,我建议您监视全局窗口级别的按键事件,而不要手动检查每个单独的表单(如您所说的那样巨大)
因此简单地window.addEventListener('keypress', () => {})
并将计数器重置逻辑放入其中就足够了。
这不是最佳解决方案,但它应该是最性能友好的解决方案。您不想为此功能牺牲性能。
答案 1 :(得分:0)
如果使用的是ReactiveForms,则可以将可观察到的valueChanges与debounceTime一起使用。像
this.myForm=this.fb.group({
field1: '',
...
});
this.myForm.valueChanges.pipe(
debounceTime(3000)
).subscribe(()=>{
alert("no changes in 3 seconds")
})
仅当发生更改时,如果经过3秒并且没有更多更改,则发生了某些事情