From 54ddeecdae8965a2bd4265e0556a4e6074d96a0b Mon Sep 17 00:00:00 2001 From: Djesika Vacheva Date: Tue, 16 Jun 2026 15:30:26 +0300 Subject: [PATCH 1/2] refactor:replace constructor injection with inject() --- .../faculty-add-form/faculty-add-form.ts | 10 +++--- .../faculty-delete-form.ts | 12 +++---- .../faculty/faculty-edit/faculty-edit.ts | 32 ++++++++----------- .../faculty-options/faculty-options.ts | 4 +-- .../faculty/faculty-table/faculty-table.ts | 8 ++--- .../major/major-add-form/major-add-form.ts | 10 +++--- .../major-delete-form/major-delete-form.ts | 12 +++---- .../major/major-edit-form/major-edit-form.ts | 30 +++++++---------- .../major/major-options/major-options.ts | 4 +-- .../features/major/major-table/major-table.ts | 10 +++--- .../student-add-form/student-add-form.ts | 4 +-- .../student-options/student-options.ts | 4 +-- .../features/university/university-service.ts | 4 +-- 13 files changed, 60 insertions(+), 84 deletions(-) diff --git a/uniplanWeb/src/app/features/faculty/faculty-add-form/faculty-add-form.ts b/uniplanWeb/src/app/features/faculty/faculty-add-form/faculty-add-form.ts index 81d040a..2a01726 100644 --- a/uniplanWeb/src/app/features/faculty/faculty-add-form/faculty-add-form.ts +++ b/uniplanWeb/src/app/features/faculty/faculty-add-form/faculty-add-form.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { MatFormField, MatLabel } from '@angular/material/form-field'; @@ -35,11 +35,9 @@ export class FacultyAddForm implements OnInit { universityId = ''; universities: UniversityElm[] = []; - constructor( - private dialogRef: MatDialogRef, - private facultyService: FacultyService, - private universityService: UniversityService - ) {} + private dialogRef = inject(MatDialogRef); + private facultyService = inject(FacultyService); + private universityService = inject(UniversityService); ngOnInit(): void { this.universityService.getAllUniversities().subscribe({ diff --git a/uniplanWeb/src/app/features/faculty/faculty-delete-form/faculty-delete-form.ts b/uniplanWeb/src/app/features/faculty/faculty-delete-form/faculty-delete-form.ts index 6a27b3f..ce10272 100644 --- a/uniplanWeb/src/app/features/faculty/faculty-delete-form/faculty-delete-form.ts +++ b/uniplanWeb/src/app/features/faculty/faculty-delete-form/faculty-delete-form.ts @@ -1,4 +1,4 @@ -import { Component, Inject, ChangeDetectionStrategy } from '@angular/core'; +import {Component, ChangeDetectionStrategy, inject} from '@angular/core'; import { DeleteForm } from '../../../core/shared/delete-form/delete-form'; import { MAT_DIALOG_DATA, @@ -15,12 +15,10 @@ import { FacultyService } from '../faculty-service'; styleUrl: './faculty-delete-form.scss', }) export class FacultyDeleteForm { - constructor( - private facultyService: FacultyService, - private dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) - public data: { id: string; facultyName: string } - ) {} + + private facultyService = inject(FacultyService); + private dialogRef = inject(MatDialogRef); + public data = inject<{ id: string; facultyName: string }>(MAT_DIALOG_DATA); deleteFaculty(): void { this.facultyService.deleteFaculty(this.data.id).subscribe({ diff --git a/uniplanWeb/src/app/features/faculty/faculty-edit/faculty-edit.ts b/uniplanWeb/src/app/features/faculty/faculty-edit/faculty-edit.ts index da277c9..aa6d913 100644 --- a/uniplanWeb/src/app/features/faculty/faculty-edit/faculty-edit.ts +++ b/uniplanWeb/src/app/features/faculty/faculty-edit/faculty-edit.ts @@ -1,4 +1,4 @@ -import { Component, Inject, ChangeDetectionStrategy } from '@angular/core'; +import { Component, ChangeDetectionStrategy, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { MatDialogModule, @@ -30,25 +30,19 @@ import { EditForm } from '../../../core/shared/edit-form/edit-form'; ], }) export class FacultyEdit { - facultyName = ''; - location = ''; - universityId = ''; - constructor( - private dialogRef: MatDialogRef, - private facultyService: FacultyService, - @Inject(MAT_DIALOG_DATA) - public data: { - id: string; - facultyName: string; - location: string; - universityId: string; - } - ) { - this.facultyName = data.facultyName; - this.location = data.location; - this.universityId = data.universityId; - } + private dialogRef = inject(MatDialogRef); + private facultyService = inject(FacultyService); + public data = inject<{ + id: string; + facultyName: string; + location: string; + universityId: string; + }>(MAT_DIALOG_DATA); + + facultyName = this.data.facultyName; + location = this.data.location; + universityId = this.data.universityId; save() { if (!this.facultyName.trim()) { diff --git a/uniplanWeb/src/app/features/faculty/faculty-options/faculty-options.ts b/uniplanWeb/src/app/features/faculty/faculty-options/faculty-options.ts index 64ac111..361ed43 100644 --- a/uniplanWeb/src/app/features/faculty/faculty-options/faculty-options.ts +++ b/uniplanWeb/src/app/features/faculty/faculty-options/faculty-options.ts @@ -1,5 +1,5 @@ -import { Component, ChangeDetectionStrategy } from '@angular/core'; +import { Component, ChangeDetectionStrategy, inject } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { MatTableModule } from '@angular/material/table'; @@ -20,7 +20,7 @@ import { AddButton } from '../../../core/shared/add-button/add-button'; styleUrl: './faculty-options.scss', }) export class FacultyOptions { - constructor(private dialog: MatDialog) {} + private dialog = inject(MatDialog); openAddForm() { this.dialog.open(FacultyAddForm, { diff --git a/uniplanWeb/src/app/features/faculty/faculty-table/faculty-table.ts b/uniplanWeb/src/app/features/faculty/faculty-table/faculty-table.ts index e631512..7299f8a 100644 --- a/uniplanWeb/src/app/features/faculty/faculty-table/faculty-table.ts +++ b/uniplanWeb/src/app/features/faculty/faculty-table/faculty-table.ts @@ -1,5 +1,5 @@ -import { Component, ChangeDetectionStrategy } from '@angular/core'; +import { Component, ChangeDetectionStrategy, inject } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { MatTableModule } from '@angular/material/table'; @@ -30,10 +30,8 @@ export class FacultyTable { ]; dataSource: FacultyElm[] = []; - constructor( - private facultyService: FacultyService, - private dialog: MatDialog - ) {} + private facultyService = inject(FacultyService); + private dialog = inject(MatDialog); ngOnInit(): void { this.loadFaculties(); diff --git a/uniplanWeb/src/app/features/major/major-add-form/major-add-form.ts b/uniplanWeb/src/app/features/major/major-add-form/major-add-form.ts index 2daa689..758f8d6 100644 --- a/uniplanWeb/src/app/features/major/major-add-form/major-add-form.ts +++ b/uniplanWeb/src/app/features/major/major-add-form/major-add-form.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy, inject } from '@angular/core'; import { AddForm } from '../../../core/shared/add-form/add-form'; import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { @@ -39,11 +39,9 @@ export class MajorAddForm implements OnInit { faculties: FacultyElm[] = []; - constructor( - private dialogRef: MatDialogRef, - private majorService: MajorService, - private facultyService: FacultyService - ) {} + private dialogRef = inject(MatDialogRef); + private majorService = inject(MajorService); + private facultyService = inject(FacultyService); ngOnInit(): void { this.facultyService.getFaculties().subscribe({ diff --git a/uniplanWeb/src/app/features/major/major-delete-form/major-delete-form.ts b/uniplanWeb/src/app/features/major/major-delete-form/major-delete-form.ts index d75cd12..9923e13 100644 --- a/uniplanWeb/src/app/features/major/major-delete-form/major-delete-form.ts +++ b/uniplanWeb/src/app/features/major/major-delete-form/major-delete-form.ts @@ -1,4 +1,4 @@ -import { Component, Inject, ChangeDetectionStrategy } from '@angular/core'; +import { Component, ChangeDetectionStrategy, inject } from '@angular/core'; import { DeleteForm } from '../../../core/shared/delete-form/delete-form'; import { MAT_DIALOG_DATA, @@ -16,12 +16,10 @@ import { switchMap } from 'rxjs'; styleUrl: './major-delete-form.scss', }) export class MajorDeleteForm { - constructor( - private majorService: MajorService, - private dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) - public data: { id: string; courseId: string; name: string } - ) {} + + private majorService = inject(MajorService); + private dialogRef = inject(MatDialogRef); + public data = inject<{ id: string; courseId: string; name: string }>(MAT_DIALOG_DATA); deleteMajor(): void { this.majorService diff --git a/uniplanWeb/src/app/features/major/major-edit-form/major-edit-form.ts b/uniplanWeb/src/app/features/major/major-edit-form/major-edit-form.ts index 1c4b806..e384a96 100644 --- a/uniplanWeb/src/app/features/major/major-edit-form/major-edit-form.ts +++ b/uniplanWeb/src/app/features/major/major-edit-form/major-edit-form.ts @@ -1,4 +1,4 @@ -import { Component, Inject, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy, inject } from '@angular/core'; import { EditForm } from '../../../core/shared/edit-form/edit-form'; import { MatFormField, MatLabel } from '@angular/material/form-field'; import { @@ -32,26 +32,20 @@ import { FacultyElm } from '../../../core/interfaces/faculty-elm'; styleUrl: './major-edit-form.scss', }) export class MajorEditForm implements OnInit { - //todo - majorName = ''; - facultyId = ''; faculties: FacultyElm[] = []; - constructor( - private dialogRef: MatDialogRef, - private majorService: MajorService, - private facultyService: FacultyService, - @Inject(MAT_DIALOG_DATA) - public data: { - id: string; - majorName: string; - facultyId?: string; - } - ) { - this.majorName = data.majorName; - this.facultyId = data.facultyId || ''; - } + private dialogRef = inject(MatDialogRef); + private majorService = inject(MajorService); + private facultyService = inject(FacultyService); + public data = inject<{ + id: string; + majorName: string; + facultyId?: string; + }>(MAT_DIALOG_DATA); + + majorName = this.data.majorName; + facultyId = this.data.facultyId || ''; ngOnInit(): void { this.facultyService.getFaculties().subscribe({ diff --git a/uniplanWeb/src/app/features/major/major-options/major-options.ts b/uniplanWeb/src/app/features/major/major-options/major-options.ts index e5a0660..6c81952 100644 --- a/uniplanWeb/src/app/features/major/major-options/major-options.ts +++ b/uniplanWeb/src/app/features/major/major-options/major-options.ts @@ -1,4 +1,4 @@ -import { Component, ChangeDetectionStrategy } from '@angular/core'; +import { Component, ChangeDetectionStrategy, inject } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { MajorAddForm } from '../major-add-form/major-add-form'; @@ -20,7 +20,7 @@ import { AddButton } from '../../../core/shared/add-button/add-button'; styleUrl: './major-options.scss', }) export class MajorOptions { - constructor(private dialog: MatDialog) {} + private dialog = inject(MatDialog); openAddForm() { this.dialog.open(MajorAddForm, { diff --git a/uniplanWeb/src/app/features/major/major-table/major-table.ts b/uniplanWeb/src/app/features/major/major-table/major-table.ts index a479685..0df1042 100644 --- a/uniplanWeb/src/app/features/major/major-table/major-table.ts +++ b/uniplanWeb/src/app/features/major/major-table/major-table.ts @@ -1,5 +1,5 @@ -import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import { Component, Input, OnInit, ChangeDetectionStrategy, inject } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { MatTableModule } from '@angular/material/table'; @@ -35,11 +35,9 @@ export class MajorTable implements OnInit { @Input() type: string = ''; @Input() subtype: string = ''; - constructor( - private dialog: MatDialog, - private service: MajorService, - private facultyService: FacultyService - ) {} + private dialog = inject(MatDialog); + private service = inject(MajorService); + private facultyService = inject(FacultyService); ngOnInit(): void { this.loadMajors(); diff --git a/uniplanWeb/src/app/features/student/student-add-form/student-add-form.ts b/uniplanWeb/src/app/features/student/student-add-form/student-add-form.ts index 157d98e..f1f795d 100644 --- a/uniplanWeb/src/app/features/student/student-add-form/student-add-form.ts +++ b/uniplanWeb/src/app/features/student/student-add-form/student-add-form.ts @@ -1,4 +1,4 @@ -import { Component, ChangeDetectionStrategy } from '@angular/core'; +import { Component, ChangeDetectionStrategy, inject } from '@angular/core'; import { AddForm } from '../../../core/shared/add-form/add-form'; import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { @@ -31,7 +31,7 @@ export class StudentAddForm { course = ''; type = ''; - constructor(private dialogRef: MatDialogRef) {} + private dialogRef = inject(MatDialogRef); save() { if (!this.studentName.trim()) { diff --git a/uniplanWeb/src/app/features/student/student-options/student-options.ts b/uniplanWeb/src/app/features/student/student-options/student-options.ts index 04b7c24..469964c 100644 --- a/uniplanWeb/src/app/features/student/student-options/student-options.ts +++ b/uniplanWeb/src/app/features/student/student-options/student-options.ts @@ -1,4 +1,4 @@ -import { Component, ChangeDetectionStrategy } from '@angular/core'; +import { Component, ChangeDetectionStrategy, inject } from '@angular/core'; import { AddButton } from '../../../core/shared/add-button/add-button'; import { MatDialog } from '@angular/material/dialog'; import { StudentAddForm } from '../student-add-form/student-add-form'; @@ -11,7 +11,7 @@ import { StudentAddForm } from '../student-add-form/student-add-form'; styleUrl: './student-options.scss', }) export class StudentOptions { - constructor(private dialog: MatDialog) {} + private dialog = inject(MatDialog); openAddForm() { this.dialog.open(StudentAddForm, { diff --git a/uniplanWeb/src/app/features/university/university-service.ts b/uniplanWeb/src/app/features/university/university-service.ts index 7516f0a..b611603 100644 --- a/uniplanWeb/src/app/features/university/university-service.ts +++ b/uniplanWeb/src/app/features/university/university-service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http'; -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { Observable } from 'rxjs'; export interface UniversityElm { @@ -17,7 +17,7 @@ export interface UniversityElm { export class UniversityService { private apiUrl = 'http://localhost:8080/api/universities'; - constructor(private http: HttpClient) {} + private http = inject(HttpClient); getAllUniversities(): Observable { return this.http.get(this.apiUrl); From d5da32fa4805038e2a4801b289b354d030da3e12 Mon Sep 17 00:00:00 2001 From: Djesika Vacheva Date: Tue, 16 Jun 2026 16:07:55 +0300 Subject: [PATCH 2/2] refactor: replace remaining constructors with inject() --- .../core/shared/navmenu-component/navmenu-component.ts | 8 +++----- uniplanWeb/src/app/features/faculty/faculty-service.ts | 4 ++-- uniplanWeb/src/app/features/major/major-service.ts | 4 ++-- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/uniplanWeb/src/app/core/shared/navmenu-component/navmenu-component.ts b/uniplanWeb/src/app/core/shared/navmenu-component/navmenu-component.ts index d28b20a..9b4fdc0 100644 --- a/uniplanWeb/src/app/core/shared/navmenu-component/navmenu-component.ts +++ b/uniplanWeb/src/app/core/shared/navmenu-component/navmenu-component.ts @@ -1,4 +1,4 @@ -import { Component, HostListener, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import { Component, HostListener, OnInit, ChangeDetectionStrategy, inject } from '@angular/core'; import { CommonModule } from '@angular/common'; import { ViewService } from '../main-panel/view.service'; @@ -16,10 +16,8 @@ export class NavmenuComponent implements OnInit { isSidebarCollapsed = false; isMobileView = window.innerWidth <= 768; - constructor( - public authService: LoginAuthService, - public viewService: ViewService - ) {} + public authService = inject(LoginAuthService); + public viewService = inject(ViewService); ngOnInit(): void { this.checkViewport(); diff --git a/uniplanWeb/src/app/features/faculty/faculty-service.ts b/uniplanWeb/src/app/features/faculty/faculty-service.ts index 506fe3e..137010f 100644 --- a/uniplanWeb/src/app/features/faculty/faculty-service.ts +++ b/uniplanWeb/src/app/features/faculty/faculty-service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http'; -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { map, Observable, Subject } from 'rxjs'; import { FacultyElm } from '../../core/interfaces/faculty-elm'; @@ -11,7 +11,7 @@ export class FacultyService { refreshNeeded = new Subject(); - constructor(private http: HttpClient) {} + private http = inject(HttpClient); getFaculties(): Observable { return this.http.get(this.apiUrl).pipe( diff --git a/uniplanWeb/src/app/features/major/major-service.ts b/uniplanWeb/src/app/features/major/major-service.ts index e89004f..8fc3ed6 100644 --- a/uniplanWeb/src/app/features/major/major-service.ts +++ b/uniplanWeb/src/app/features/major/major-service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http'; -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { map, Observable, Subject, switchMap } from 'rxjs'; import { MajorElm } from '../../core/interfaces/major-elm'; @@ -13,7 +13,7 @@ export class MajorService { refreshNeeded = new Subject(); - constructor(private http: HttpClient) {} + private http = inject(HttpClient); getMajors(): Observable { return this.http.get(this.apiUrl).pipe(