As I attempt to retrieve and modify the employee details, I am encountering issues. While I am able to get the correct values for the details in the form, when it comes to editing, I am facing errors as described below:
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 issue seems to be with setting values using getFormContent()
function in the edit form.
If someone could guide me on understanding these errors and provide assistance on how to proceed, I would greatly appreciate it. 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 can see the proper values in the Network tab
However, The following errors are being displayed
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)