I want to set value in array like this:
this.form.controls[name].setValue('name')
but I am working with array forms, and this is not working, even if I pass index of the especific array form
for example this is my form array and I want to do is to set value in a function
user: FormGroup;
users: FormGroup;
constructor(private fb: FormBuilder) {}
ngOnInit() {
this.user = this.buildGroup();
this.users = this.fb.group({
data: this.fb.array([this.user])
});
}
get fData() {
return this.users.get('data') as FormArray;
}
buildGroup() {
return this.fb.group({
name: ['', [Validators.required, Validators.minLength(2)]],
account: this.fb.group({
email: ['', Validators.required],
confirm: ['', Validators.required]
})
});
}
setValue(index) {
this.fData[index].controls[name].setValue('name')
}
onSubmit() {
this.fData.push(this.buildGroup());
const {valid, value} = this.fData;
console.log(valid, value);
}
but this.fData[index].controls[name].setValue('name') this is not working
For arrays, you need to use
setControl
. Something like this:Here is what I have done to set value manually in formArray's specific form control and worked for me. I have
formArray
named asbundleDetails
.Method to set bsku control's value (where index is
[formGroupName]="i"
passed from html file).Hope this helps. Happy coding.