import { Component } from'@angular/core';
import { FormGroup, FormControl } from'@angular/forms';
@Component({
selector: 'product-form',
templateUrl: './product-form.component.html',
styleUrls: ['./product-form.component.css']
})
exportclass ProductFormComponent {
form = new FormGroup({
name: new FormControl(''),
description: new FormControl(''),
attributes: new FormGroup({
width: new FormControl(''),
height: new FormControl(''),
weight: new FormControl(''),
})
});
}
Mając już model i formularz, możemy wypełnić go danymi.
Sposób 1: Metoda setValue
Metoda setValue pochodzi z klasy FormGroup.
Jedynym wymaganym parametrem tej metody jest obiekt, który odzwierciedla strukturę naszego formularza. Czyli obiekt musi składać się z takiej samej struktury jak model danych formularza. Jeśli spróbujemy przekazać coś innego: na przykład będzie brakować jakiegoś pola, to operacja się nie uda.
Ta metoda jest bardzo podobna do poprzedniej także pochodzi z FormGroup, ale jest pewna różnica. Można do niej przekazać obiekt, którego struktura nie jest identyczna jak model danych formularza. Na przykład jeśli przekażemy do wypełnienia tylko jedno pole, to operacja się uda.
Angular udostępnia sposób przekazywania danych między komponentami: rodzic-dziecko zwany: wiązanie dwukierunkowe (ang.: two-way binding).
Wiązanie jednokierunkowe pozwala na przekazanie danych od rodzica do dziecka. Jeśli u rodzica te dane się zmienią, to zostaną od razu przekazane do dziecka. Z kolei wiązanie dwukierunkowe umożliwia wymianę danych w obu kierunkach: rodzic <--> dziecko. Czyli jeśli zmienimy dane komponecie dziecko, to komponent rodzic także te zmiany odbierze.