I am trying to get the details of the employee and then edit it. I am getting the correct values for the details in the detail form, but in the edit, I am not able to get the values in the edit form and get the following errors(provided at the end).
Error: formGroup expects a FormGroup instance. Please pass one in. TypeError:Cannot read properties of undefined (reading 'setValue') TypeError: Cannot read properties of undefined (reading 'get')
The values are being set in the edit form using getFormContent(). This is not working
If anyone could explain me the errors please and point me to the direction. Thank you
export class AddEditEmpPersonalComponent implements OnInit {
form: FormGroup;
empOfficialDetails: Employee;
employeePersonalDetails : EmployeePersonalDetails;
editMode: boolean = false;
employeeCreatedOrUpdated : boolean = false;
formTitle : string;
successMessage: string;
employeeId : string;
selectedFile: File = null;
url : any;
constructor(
private fb: FormBuilder,
private employeeService : EmployeeService,
private route : ActivatedRoute) {
var id = this.route.snapshot.paramMap.get('id');
this.employeeId = id;
this.employeeService.getEmployeePersonalDetails(this.employeeId)
.subscribe(data => {
this.employeePersonalDetails = data;
if (this.employeePersonalDetails = null)
{
alert("create");
this.editMode = false;
this.createForm();
this.formTitle ="Add Employee Personal Details";
this.successMessage = "Employee Personal Details Added";
this.employeeCreatedOrUpdated = true;
}
else
{
alert("edit")
alert("hi");
alert(this.employeePersonalDetails.id);
alert(this.employeePersonalDetails.nationality);
alert("hello");
this.editMode = true;
this.getFormContent();
this.formTitle ="Update Employee Personal Details";
this.successMessage = "Employee Personal Details Updated";
this.employeeCreatedOrUpdated = true;
//edit
}
}
)
}
This is the create form
createForm(){
this.form = this.fb.group({
"id": this.employeeId, // why does this say unknown property
"fullName": this.empOfficialDetails.firstName+ " " +this.empOfficialDetails.middleName + " " + this.empOfficialDetails.lastName,
"photo": [''],
"dateOfBirth": [''],
"nationality": [''],
...........
})
}
This is the getFormContent() which is supposed to prefill the data in the form for edit
getFormContent(){
this.form.setValue({
fullName: this.employeePersonalDetails.fullName || '',
photo:this.employeePersonalDetails.photo || '',
bankName: this.employeePersonalDetails.bankName || '',
branch: this.employeePersonalDetails.branch || '',
.........
})
}
I get proper values when I check in Network
But I am getting The following errors
core.js:6479 ERROR Error: formGroup expects a FormGroup instance. Please pass one in.
Example:
<div [formGroup]="myGroup">
<input formControlName="firstName">
</div>
In your class:
this.myGroup = new FormGroup({
firstName: new FormControl()
});
at missingFormException (forms.js:1497)
at FormGroupDirective._checkFormPresent (forms.js:5520)
at FormGroupDirective.ngOnChanges (forms.js:5293)
at FormGroupDirective.rememberChangeHistoryAndInvokeOnChangesHook (core.js:1498)
at callHook (core.js:2536)
at callHooks (core.js:2495)
at executeInitAndCheckHooks (core.js:2446)
at refreshView (core.js:9480)
at refreshEmbeddedViews (core.js:10590)
at refreshView (core.js:9489)
defaultErrorLogger @ core.js:6479
handleError @ core.js:6527
(anonymous) @ core.js:29691
invoke @ zone.js:372
run @ zone.js:134
runOutsideAngular @ core.js:28572
tick @ core.js:29691
(anonymous) @ core.js:29539
invoke @ zone.js:372
onInvoke @ core.js:28673
invoke @ zone.js:371
run @ zone.js:134
run @ core.js:28527
next @ core.js:29538
__tryOrUnsub @ Subscriber.js:183
next @ Subscriber.js:122
_next @ Subscriber.js:72
next @ Subscriber.js:49
next @ Subject.js:39
emit @ core.js:25936
checkStable @ core.js:28595
onHasTask @ core.js:28690
hasTask @ zone.js:426
_updateTaskCount @ zone.js:447
_updateTaskCount @ zone.js:274
runTask @ zone.js:195
drainMicroTaskQueue @ zone.js:582
invokeTask @ zone.js:491
invokeTask @ zone.js:1600
globalZoneAwareCallback @ zone.js:1626
core.js:6479 ERROR TypeError: Cannot read properties of undefined (reading 'get')
at FormGroupDirective.addControl (forms.js:5346)
at FormControlName._setUpControl (forms.js:5929)
at FormControlName.ngOnChanges (forms.js:5874)
at FormControlName.rememberChangeHistoryAndInvokeOnChangesHook (core.js:1498)
at callHook (core.js:2536)
at callHooks (core.js:2495)
at executeInitAndCheckHooks (core.js:2446)
at refreshView (core.js:9480)
at refreshEmbeddedViews (core.js:10590)
at refreshView (core.js:9489)
core.js:6479 ERROR TypeError: Cannot read properties of undefined (reading 'setValue')
at AddEditEmpPersonalComponent.getFormContent (add-edit-emp-personal.component.ts:146)
at SafeSubscriber._next (add-edit-emp-personal.component.ts:58)
at SafeSubscriber.__tryOrUnsub (Subscriber.js:183)
at SafeSubscriber.next (Subscriber.js:122)
at Subscriber._next (Subscriber.js:72)