2017-09-07 91 views
1

我想在表單有效時自動保存反應形式的內容,而不點擊保存按鈕。如何實現在角度4中自動保存反應形式?

+0

嗨,歡迎來到stackoverflow ...你到目前爲止嘗試過什麼? –

+0

我試圖使用角自動保存形式,但似乎不會在angular4中工作。 –

+0

你的意思是你想在每次重擊時保存用戶數據? – trichetriche

回答

2

您將希望訂閱FormGroup的statusChanges()方法,並且在該Observable中,您可以確定FormGroup是否有效,然後觸發保存事件。

import 'rxjs/add/operator/takeWhile'; 
import { FormBuilder, FormGroup } from '@angular/forms'; 

@Component({...}) 
export class MyComponent { 

    private form: FormGroup; 
    private alive: boolean; 

    constructor(private formBuilder: FormBuilder) {} 

    public ngOnInit(): void { 
    this.alive = true; 
    this.form = this.formBuilder.group({ 
     // your form configuration 
    }); 

    this.form.statusChanges() 
     .takeWhile(this.alive) // only subscribe while this component is alive 
     .subscribe((status) => { 
     // if status is valid, auto-save 
     }); 
    } 

    public void ngOnDestroy() { 
    this.alive = false; 
    } 
} 
0

不要忘記在最後取消訂閱。您應該捕獲您的訂閱,並在最後取消訂閱。以避免任何內存泄漏。

import { Subscription } from 'rxjs/subscription'; 
@Component({...}) 
export class MyComponent { 
... 
subscription = new Subscription; 
... 

ngOnInit() { 
    this.subscription.add(this.form.statusChanges() 
    .takeWhile(this.alive) 
    .subscribe(status => { 
    //do whatever 
    }); 

ngOnDestroy() { 
    this.subscription.unsubscribe(); 
}