Mam formę reaktywną, którą chciałbym bezpośrednio wypełnić mój model.Angular 2: ReactiveForm Aktualizowanie Model
form.component.html
<form [formGroup]="personForm" (ngSubmit)="savePerson()">
<md-card class="app-input-section">
<md-input formControlName="personName" placeholder="Person Name"></md-input>
... many more fields
<button md-raised-button color="primary">Save</button>
</md-card>
</form>
form.component.ts
@Component({
selector: 'person',
template: 'form.component.html'
})
export class FormComponent implements OnInit {
person: Person;
formBuilder: FormBuilder;
personForm: FormGroup;
constructor(formBuilder: FormBuilder, personService: PersonService) {
this.person = new Person();
this.personForm = formBuilder.group({
personName: [this.person.personName, Validators.required],
... many more properties for form
});
}
ngOnInit() {
console.log('ngOnInit() called');
}
savePerson() {
this.person.personName = this.personForm.value.personName;
... many more properties set
this.personService.savePersontoDB(this.person);
}
}
W funkcji savePerson()
mam skopiować wartości z personForm
FormGroup do osoby obiekt. Dla kilku właściwości jest to w porządku, ale jeśli mam wiele właściwości, będzie to po prostu kolejna rzecz do zarządzania. W jaki sposób mogę uprościć ten kod, tak aby:
- Wartości
personForm
są automatycznie kopiowane do obiektu Person w miarę zmiany wartości formularza. - Wartości
personForm
są automatycznie kopiowane do obiektu Person po naciśnięciu przez użytkownika przycisku "zapisz" (który następnie wywołuje funkcjęsave()
. Rozumiem przez to, że nie muszę kopiować wszystkich indywidualnych wartości formularza do mojego modelu (Osoba) obiektu.
Jaki jest najlepszy sposób, aby to się stało? Czy istnieje jakiś pomocnik mogę używać, czy jest to prostsze niż to?
Dziękujemy
JT
To jest dokładnie to, czego szukałem. Skonfiguruj obiekt formularza i po prostu skopiuje wszystko do obiektu, który ma zostać zapisany. Dziękuję bardzo. –