diff --git a/src/frontend/src/app/features/students/pages/student-form/student-form.component.ts b/src/frontend/src/app/features/students/pages/student-form/student-form.component.ts index 69ab02b..86ff422 100644 --- a/src/frontend/src/app/features/students/pages/student-form/student-form.component.ts +++ b/src/frontend/src/app/features/students/pages/student-form/student-form.component.ts @@ -1,4 +1,4 @@ -import { Component, ChangeDetectionStrategy, signal, inject, OnInit, input } from '@angular/core'; +import { Component, ChangeDetectionStrategy, signal, inject, input, effect } from '@angular/core'; import { Router, RouterLink } from '@angular/router'; import { FormBuilder, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms'; import { MatIconModule } from '@angular/material/icon'; @@ -167,7 +167,7 @@ import { LoadingSpinnerComponent } from '@shared/index'; } `], }) -export class StudentFormComponent implements OnInit { +export class StudentFormComponent { id = input(); private fb = inject(FormBuilder); @@ -186,12 +186,15 @@ export class StudentFormComponent implements OnInit { saving = signal(false); serverError = signal(null); - ngOnInit(): void { - const studentId = this.id(); - if (studentId) { - this.isEditing.set(true); - this.loadStudent(parseInt(studentId, 10)); - } + constructor() { + // Use effect to react when route param 'id' becomes available + effect(() => { + const studentId = this.id(); + if (studentId && !this.isEditing()) { + this.isEditing.set(true); + this.loadStudent(parseInt(studentId, 10)); + } + }); } private loadStudent(id: number): void { diff --git a/src/frontend/src/app/features/students/pages/student-list/student-list.component.ts b/src/frontend/src/app/features/students/pages/student-list/student-list.component.ts index 3f927c4..6cbdb45 100644 --- a/src/frontend/src/app/features/students/pages/student-list/student-list.component.ts +++ b/src/frontend/src/app/features/students/pages/student-list/student-list.component.ts @@ -84,13 +84,13 @@ import { CreditsPipe } from '@shared/pipes/credits.pipe';
- +