2017-10-03 4 views
7

Ich versuche, Formulardaten die automatische Speicherung in Angular 4. umzusetzen Es sollte so funktionieren:
Angular 4 geplant Form automatisch gespeicherte

  • Benutzer einige Daten in der Form ändert -> einige der DB speichern Anfrage aufgerufen . Angenommen, ein Timer wird hier für 2s gestartet.
  • Während 2s von der vorherigen Speicheranforderung werden alle Änderungen keine Anforderungen (zur Reduzierung der DB-Last) auslösen, sondern eine weitere Speicheranforderung auslösen, dann wird der 2s-Timer ablaufen.
  • Wenn momentan kein Timer gestartet wird, sollte die Speicheranforderung sofort aufgerufen werden.

Ich nehme an, dass Observable, Subject und Scheduler von RxJS wird mir helfen, aber ich bin es völlig neu. Können Sie bitte den besten Ansatz vorschlagen, um die oben genannten Funktionen zu erreichen?

Antwort

4

Sie können nur auf valueChanges property on FormGroup object abonnieren mit dem Betreiber auditTime gekettet:

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

Vielleicht haben auch einen Blick auf throttleTime und debounceTime Betreiber.

+0

Vielen Dank! "auditTime" -Operator ist genau das, was ich brauchte! So einfache und elegante Lösung. – aleksei

+0

Verwandte Antwort: https://stackoverflow.com/questions/46094431/how-to-implement-auto-save-a-reactive-form-in-angular-4 – Hauke