Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular 4 scheduled form autosave

I'm trying to implement form data autosave in Angular 4. It should work like this:

  • User changes some data in the form -> some save request to DB is invoked. Let's assume some timer is started here for 2s.
  • During 2s from previous save request all changes will not invoke any requests (to reduce DB load), but will trigger another save request then 2s timer will expire.
  • If no timer is started at the moment then save request should be invoked immediately.

I suppose that Observable, Subject and Scheduler from RxJS will help me, but I am completely new to it. Could you suggest the best approach for achieving above functionality please?

like image 472
aleksei Avatar asked Oct 03 '17 11:10

aleksei


2 Answers

You can just subscribe to valueChanges property on FormGroup object chained with the auditTime operator:

this.form.valueChanges.auditTime(2000).subscribe(formData => /* save to DB */)

Maybe also have a look at throttleTime and debounceTime operators.

like image 51
martin Avatar answered Nov 07 '22 07:11

martin


For Angular 6, you may have to use pipe.

this.form.valueChanges.pipe(auditTime(2000)).subscribe(formData => /* save to DB */)
like image 14
J K Avatar answered Nov 07 '22 06:11

J K