Ich habe solche reaktive Form:Angular 4: setValue Formbuilder leeres Array
constructor(...){
this.form = this.formBuilder.group({
name: ['', Validators.compose([Validators.required, Validators.maxLength(50)])],
memes: this.formBuilder.array([
this.initMemes('TrollFace')
])
});
}
initMemes (name?) {
return this.formBuilder.group({
id: [''], name: [name]
});
}
später kann ich einige weitere hinzufügen memes
:
addMemes() {
const control = <FormArray>this.form.controls['memes'];
control.push(this.initMemes('anyName'));
}
und dann, wenn ich Form Werte bekomme ich erhalten:
this.form.controls['memes'].value
- hier habe ich Array
Aber es gibt einen Fall, wenn ich diesebraucheauf ein leeres Array zu setzen, wie ist es möglich, zu tun?
Wenn ich stellte es auf diese Weise:
this.form.controls['memes'].setValue([])
ich eine Fehlermeldung anzeigt: Must supply a value for form control at index: 0.
, was ich falsch gemacht?
Ich denke, es control.controls.removeAt (i) sein sollte. Da das console.log (Steuerelement) ein Array mit Namenssteuerelementen hat, erhalten Sie andernfalls den Fehler "Eigenschaft kann nicht gelesen werden 'aktiviert' von null". – Jassi