FormArray
rozciąga AbstractControl
więc ma valueChanges
właściwość, która emituje Chanes.
this.form = this.fb.group({
providers: this.fb.array([]),
});
(this.form.get('providers') as FormArray).push(new FormControl('', Validators.required));
(this.form.get('providers') as FormArray).push(new FormControl('', Validators.required));
(this.form.get('providers') as FormArray).valueChanges.subscribe(values => {
console.log(values);
});
W szablonie:
<input *ngFor="let field of form.controls.providers.controls;" [formControl]="field">
values
w subskrybować zwróci tablicę z wartości każdego pola wejściowego gdy którykolwiek zmian (gramatycznie lub UI).
W przypadku, gdy są FormGroup
w FormArray
nic się nie zmienia. po prostu użyj następującego kodu komponentu.
(this.form.get('providers') as FormArray).push(this.fb.group({
'name': '',
'age': ''
}));
i szablon będzie:
<div *ngFor="let field of form.controls.providers.controls;" [formGroup]="field">
<input formControlName="name" placeholder="name">
<input formControlName="age" placeholder="age">
</div>
tutaj jest plunker
Musisz zarejestrować element wewnątrz dostawców tablicy jako inną grupą w celu jej wykrycia. –
Czy możesz to wyjaśnić? –
Jaki jest element dostawców? –