是否需要一种解决方案来使用Angular 5服务来警告用户页面过期?

时间:2018-08-16 16:16:29

标签: angular angular-services

我有很多页面,上面有很多表格。我想创建一个服务来监视此表单。该表单绑定到具有大量属性的数据模型对象。我尝试使用名为watchjs的库观看数据模型对象,但这在浏览器内存上太繁琐了。我希望能够在用户停止输入时收听更改,以便60秒后我可以警告他/她更改将被保存。

谢谢。

2 个答案:

答案 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秒并且没有更多更改,则发生了某些事情