I got a problem when reinitializing formGroup from parent component that is used in my custom component. Error that i get is:
There is no FormControl instance attached to form control element with name: 'selectedCompany'
HTML:
<form [formGroup]="addForm"> ... <my-custom-component formControlName="selectedCompany"></my-custom-component> ... </form <my-custom-component> is created according to valid way of creating custom formControl component: https://blog.thoughtram.io/angular/2016/07/27/custom-form-controls-in-angular-2.html#implementing-controlvalueaccessor
Component
This is code that initializes formGroup variable addForm:
let formTemp: any = { selectedCompany: new FormControl(null, [Validators.required]), } this.addForm = this._formBuilder.group(formTemp); First time addForm is initialized all is good. But when i reopen modal where form is located, and same component code is executed, above mentioned error occurs.
I figured out that it is not good to reinitialize formGroup over and over again, because component looses reference to old formGroup.
If setting values is what is needed to show fresh form, .setValue is the solution here:
Component
Instead of reinitializing addForm, check if addForm was initialized previously and if so, only set value for existing FormControls:
if (this.addForm) { this.addForm.setValue({ selectedCountry: null }) } else { let formTemp: any = { selectedCompany: new FormControl(null, [Validators.required]), } this.addForm = this._formBuilder.group(formTemp); } In this way, I figured, reference is not lost to old addForm, so no error occurs.
My solution for that is to replace formControlName with formControl.
Instead of
<my-custom-component formControlName="selectedCompany"></my-custom-component> use
<my-custom-component [formControl]="addForm.controls['selectedCompany']"></my-custom-component> or with some getMethod for taking formControl
Works also with error:
There is no FormControl instance attached to form control element with path
where I've used some FormArray.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With