I want to auto save content in reactive form when form is valid without clicking save button.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You will want to subscribe to the statusChanges()
method of your FormGroup, and in that Observable you can determine whether the FormGroup is valid and then trigger a save event.
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;
}
}
回答2:
Don't forget to unsubscribe at the end. You should capture your subscriptions and unsubscribe them at the end. to avoid any memory leaks.
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();
}