Update to Angular v19 and fixing #3
@@ -1,6 +1,6 @@
|
|||||||
import { Component, OnInit } from "@angular/core";
|
import { Component, OnInit } from "@angular/core";
|
||||||
import { Router } from "@angular/router";
|
import { Router, RouterOutlet } from "@angular/router";
|
||||||
import { TranslateService } from "@ngx-translate/core";
|
import { TranslateModule, TranslateService } from "@ngx-translate/core";
|
||||||
import { CommonModule } from "@angular/common";
|
import { CommonModule } from "@angular/common";
|
||||||
import { MatToolbarModule } from "@angular/material/toolbar";
|
import { MatToolbarModule } from "@angular/material/toolbar";
|
||||||
import { MatIconModule } from "@angular/material/icon";
|
import { MatIconModule } from "@angular/material/icon";
|
||||||
@@ -29,6 +29,8 @@ import { ServiceCacheApi } from "../services/service-cache-api.service";
|
|||||||
MatOptionModule,
|
MatOptionModule,
|
||||||
MatSidenavModule,
|
MatSidenavModule,
|
||||||
MatListModule,
|
MatListModule,
|
||||||
|
RouterOutlet,
|
||||||
|
TranslateModule,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class AppComponent implements OnInit {
|
export class AppComponent implements OnInit {
|
||||||
|
|||||||
@@ -1,38 +1,10 @@
|
|||||||
import { BrowserModule } from "@angular/platform-browser";
|
import { inject, provideAppInitializer } from "@angular/core";
|
||||||
import {
|
|
||||||
NgModule,
|
|
||||||
importProvidersFrom,
|
|
||||||
inject,
|
|
||||||
provideAppInitializer,
|
|
||||||
} from "@angular/core";
|
|
||||||
import { ApplicationConfig, provideZoneChangeDetection } from "@angular/core";
|
import { ApplicationConfig, provideZoneChangeDetection } from "@angular/core";
|
||||||
import { TranslateLoader, TranslateModule } from "@ngx-translate/core";
|
|
||||||
import { TranslateHttpLoader } from "@ngx-translate/http-loader";
|
import { TranslateHttpLoader } from "@ngx-translate/http-loader";
|
||||||
import { provideRouter, RouterModule } from "@angular/router";
|
import { provideRouter } from "@angular/router";
|
||||||
import { DatePipe } from "@angular/common";
|
import { DatePipe } from "@angular/common";
|
||||||
import { HttpClient, HTTP_INTERCEPTORS } from "@angular/common/http";
|
import { HttpClient, HTTP_INTERCEPTORS } from "@angular/common/http";
|
||||||
|
|
||||||
import { SummaryComponent } from "./summary/summary.component";
|
|
||||||
import { ListOfJumpsComponent } from "./list-of-jumps/list-of-jumps.component";
|
|
||||||
import { ListOfDzsComponent } from "./list-of-dzs/list-of-dzs.component";
|
|
||||||
import { NewJumpComponent } from "./new-jump/new-jump.component";
|
|
||||||
import { ListOfAircraftsComponent } from "./list-of-aircrafts/list-of-aircrafts.component";
|
|
||||||
import { ListOfJumpTypesComponent } from "./list-of-jump-types/list-of-jump-types.component";
|
|
||||||
import { ListOfGearsComponent } from "./list-of-gears/list-of-gears.component";
|
|
||||||
import { NewAircraftComponent } from "./new-aircraft/new-aircraft.component";
|
|
||||||
import { NewGearComponent } from "./new-gear/new-gear.component";
|
|
||||||
import { NewDropZoneComponent } from "./new-drop-zone/new-drop-zone.component";
|
|
||||||
import { NewJumpTypeComponent } from "./new-jump-type/new-jump-type.component";
|
|
||||||
import { DefaultComponent } from "./default/default.component";
|
|
||||||
import { LoginComponent } from "./login/login.component";
|
|
||||||
import { CreateUserComponent } from "./create-user/create-user.component";
|
|
||||||
import { LoginUserComponent } from "./login-user/login-user.component";
|
|
||||||
import { UserProfileComponent } from "./user-profile/user-profile.component";
|
|
||||||
import { ListOfImagesComponent } from "./list-of-images/list-of-images.component";
|
|
||||||
import { JumpInfosComponent } from "./jump-infos/jump-infos.component";
|
|
||||||
import { NewTunnelFlightComponent } from "./new-tunnel-flight/new-tunnel-flight.component";
|
|
||||||
import { ListOfTunnelFlightsComponent } from "./list-of-tunnel-flights/list-of-tunnel-flights.component";
|
|
||||||
|
|
||||||
import { DateService } from "../services/date.service";
|
import { DateService } from "../services/date.service";
|
||||||
import { AircraftService } from "../services/aircraft.service";
|
import { AircraftService } from "../services/aircraft.service";
|
||||||
import { DropzoneService } from "../services/dropzone.service";
|
import { DropzoneService } from "../services/dropzone.service";
|
||||||
@@ -48,35 +20,12 @@ import { ServiceCacheApi } from "../services/service-cache-api.service";
|
|||||||
import { TunnelService } from "../services/tunnel.service";
|
import { TunnelService } from "../services/tunnel.service";
|
||||||
import { TunnelFlightService } from "../services/tunnel-flight.service";
|
import { TunnelFlightService } from "../services/tunnel-flight.service";
|
||||||
|
|
||||||
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
|
|
||||||
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
||||||
import { MatAutocompleteModule } from "@angular/material/autocomplete";
|
|
||||||
import { MatButtonModule } from "@angular/material/button";
|
|
||||||
import { MatCheckboxModule } from "@angular/material/checkbox";
|
|
||||||
import { MatOptionModule, MatNativeDateModule } from "@angular/material/core";
|
|
||||||
import { MatDatepickerModule } from "@angular/material/datepicker";
|
|
||||||
import { MatFormFieldModule } from "@angular/material/form-field";
|
|
||||||
import { MatIconModule } from "@angular/material/icon";
|
|
||||||
import { MatInputModule } from "@angular/material/input";
|
|
||||||
import { MatPaginatorModule } from "@angular/material/paginator";
|
|
||||||
import { MatProgressSpinnerModule } from "@angular/material/progress-spinner";
|
|
||||||
import { MatProgressBarModule } from "@angular/material/progress-bar";
|
|
||||||
import { MatSelectModule } from "@angular/material/select";
|
|
||||||
import { MatTableModule } from "@angular/material/table";
|
|
||||||
import { MatTabsModule } from "@angular/material/tabs";
|
|
||||||
import { MatDialogModule } from "@angular/material/dialog";
|
|
||||||
import { MatCardModule } from "@angular/material/card";
|
|
||||||
import { MatRadioModule } from "@angular/material/radio";
|
|
||||||
import { MatSidenavModule } from "@angular/material/sidenav";
|
|
||||||
import { MatListModule } from "@angular/material/list";
|
|
||||||
import { MatToolbarModule } from "@angular/material/toolbar";
|
|
||||||
import { provideCharts, withDefaultRegisterables } from "ng2-charts";
|
import { provideCharts, withDefaultRegisterables } from "ng2-charts";
|
||||||
|
|
||||||
import { JwtAuthInterceptor } from "../interceptor/jwt-auth.interceptor";
|
import { JwtAuthInterceptor } from "../interceptor/jwt-auth.interceptor";
|
||||||
import { ErrorInterceptor } from "../interceptor/error.interceptor";
|
import { ErrorInterceptor } from "../interceptor/error.interceptor";
|
||||||
import { environment } from "../environments/environment";
|
import { environment } from "../environments/environment";
|
||||||
|
|
||||||
import { AppComponent } from "./app.component";
|
|
||||||
import { routes } from "./app.routes";
|
import { routes } from "./app.routes";
|
||||||
|
|
||||||
// AOT compilation support
|
// AOT compilation support
|
||||||
@@ -116,62 +65,4 @@ export const appConfig: ApplicationConfig = {
|
|||||||
provideZoneChangeDetection({ eventCoalescing: true }),
|
provideZoneChangeDetection({ eventCoalescing: true }),
|
||||||
provideRouter(routes),
|
provideRouter(routes),
|
||||||
],
|
],
|
||||||
// declarations: [
|
|
||||||
// AppComponent,
|
|
||||||
// SummaryComponent,
|
|
||||||
// ListOfJumpsComponent,
|
|
||||||
// ListOfDzsComponent,
|
|
||||||
// NewJumpComponent,
|
|
||||||
// ListOfAircraftsComponent,
|
|
||||||
// ListOfJumpTypesComponent,
|
|
||||||
// ListOfGearsComponent,
|
|
||||||
// NewAircraftComponent,
|
|
||||||
// NewGearComponent,
|
|
||||||
// NewDropZoneComponent,
|
|
||||||
// NewJumpTypeComponent,
|
|
||||||
// DefaultComponent,
|
|
||||||
// LoginComponent,
|
|
||||||
// CreateUserComponent,
|
|
||||||
// LoginUserComponent,
|
|
||||||
// UserProfileComponent,
|
|
||||||
// ListOfImagesComponent,
|
|
||||||
// JumpInfosComponent,
|
|
||||||
// NewTunnelFlightComponent,
|
|
||||||
// ListOfTunnelFlightsComponent,
|
|
||||||
// ],
|
|
||||||
// imports: [
|
|
||||||
// RouterModule.forRoot(routes, { enableTracing: !environment.production }),
|
|
||||||
// TranslateModule.forRoot({
|
|
||||||
// loader: {
|
|
||||||
// provide: TranslateLoader,
|
|
||||||
// useFactory: httpTranslateLoader,
|
|
||||||
// deps: [HttpClient],
|
|
||||||
// },
|
|
||||||
// }),
|
|
||||||
// ReactiveFormsModule,
|
|
||||||
// FormsModule,
|
|
||||||
// BrowserModule,
|
|
||||||
// BrowserAnimationsModule,
|
|
||||||
// MatPaginatorModule,
|
|
||||||
// MatTableModule,
|
|
||||||
// MatSelectModule,
|
|
||||||
// MatOptionModule,
|
|
||||||
// MatFormFieldModule,
|
|
||||||
// MatCheckboxModule,
|
|
||||||
// MatDatepickerModule,
|
|
||||||
// MatNativeDateModule,
|
|
||||||
// MatInputModule,
|
|
||||||
// MatButtonModule,
|
|
||||||
// MatIconModule,
|
|
||||||
// MatAutocompleteModule,
|
|
||||||
// MatProgressSpinnerModule,
|
|
||||||
// MatProgressBarModule,
|
|
||||||
// MatTabsModule,
|
|
||||||
// MatDialogModule,
|
|
||||||
// MatCardModule,
|
|
||||||
// MatRadioModule,
|
|
||||||
// MatSidenavModule,
|
|
||||||
// MatListModule,
|
|
||||||
// MatToolbarModule,
|
|
||||||
// ],
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,236 +0,0 @@
|
|||||||
import { BrowserModule } from "@angular/platform-browser";
|
|
||||||
import { NgModule, inject, provideAppInitializer } from "@angular/core";
|
|
||||||
import { RouterModule, Routes } from "@angular/router";
|
|
||||||
import {
|
|
||||||
HttpClient,
|
|
||||||
HttpClientModule,
|
|
||||||
HTTP_INTERCEPTORS,
|
|
||||||
} from "@angular/common/http";
|
|
||||||
import { DatePipe } from "@angular/common";
|
|
||||||
import { TranslateLoader, TranslateModule } from "@ngx-translate/core";
|
|
||||||
import { TranslateHttpLoader } from "@ngx-translate/http-loader";
|
|
||||||
|
|
||||||
import { AppComponent } from "./app.component";
|
|
||||||
import { environment } from "../environments/environment";
|
|
||||||
|
|
||||||
import { SummaryComponent } from "./summary/summary.component";
|
|
||||||
import { ListOfJumpsComponent } from "./list-of-jumps/list-of-jumps.component";
|
|
||||||
import { ListOfDzsComponent } from "./list-of-dzs/list-of-dzs.component";
|
|
||||||
import { NewJumpComponent } from "./new-jump/new-jump.component";
|
|
||||||
import { ListOfAircraftsComponent } from "./list-of-aircrafts/list-of-aircrafts.component";
|
|
||||||
import { ListOfJumpTypesComponent } from "./list-of-jump-types/list-of-jump-types.component";
|
|
||||||
import { ListOfGearsComponent } from "./list-of-gears/list-of-gears.component";
|
|
||||||
import { NewAircraftComponent } from "./new-aircraft/new-aircraft.component";
|
|
||||||
import { NewGearComponent } from "./new-gear/new-gear.component";
|
|
||||||
import { NewDropZoneComponent } from "./new-drop-zone/new-drop-zone.component";
|
|
||||||
import { NewJumpTypeComponent } from "./new-jump-type/new-jump-type.component";
|
|
||||||
import { DefaultComponent } from "./default/default.component";
|
|
||||||
import { LoginComponent } from "./login/login.component";
|
|
||||||
import { CreateUserComponent } from "./create-user/create-user.component";
|
|
||||||
import { LoginUserComponent } from "./login-user/login-user.component";
|
|
||||||
import { UserProfileComponent } from "./user-profile/user-profile.component";
|
|
||||||
import { ListOfImagesComponent } from "./list-of-images/list-of-images.component";
|
|
||||||
import { JumpInfosComponent } from "./jump-infos/jump-infos.component";
|
|
||||||
import { NewTunnelFlightComponent } from "./new-tunnel-flight/new-tunnel-flight.component";
|
|
||||||
import { ListOfTunnelFlightsComponent } from "./list-of-tunnel-flights/list-of-tunnel-flights.component";
|
|
||||||
|
|
||||||
import { DateService } from "../services/date.service";
|
|
||||||
import { AircraftService } from "../services/aircraft.service";
|
|
||||||
import { DropzoneService } from "../services/dropzone.service";
|
|
||||||
import { GearService } from "../services/gear.service";
|
|
||||||
import { JumpService } from "../services/jump.service";
|
|
||||||
import { JumpTypeService } from "../services/jump-type.service";
|
|
||||||
import { StatsService } from "../services/stats.service";
|
|
||||||
import { ServiceComm } from "../services/service-comm.service";
|
|
||||||
import { RequestCache } from "../services/request-cache.service";
|
|
||||||
import { AuthGuardService } from "../services/auth-guard.service";
|
|
||||||
import { ImageService } from "../services/image.service";
|
|
||||||
import { ConfigurationHelper } from "../services/configuration-helper";
|
|
||||||
import { ServiceCacheApi } from "../services/service-cache-api.service";
|
|
||||||
import { TunnelService } from "../services/tunnel.service";
|
|
||||||
import { TunnelFlightService } from "../services/tunnel-flight.service";
|
|
||||||
|
|
||||||
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
|
|
||||||
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
||||||
import { MatAutocompleteModule } from "@angular/material/autocomplete";
|
|
||||||
import { MatButtonModule } from "@angular/material/button";
|
|
||||||
import { MatCheckboxModule } from "@angular/material/checkbox";
|
|
||||||
import { MatOptionModule, MatNativeDateModule } from "@angular/material/core";
|
|
||||||
import { MatDatepickerModule } from "@angular/material/datepicker";
|
|
||||||
import { MatFormFieldModule } from "@angular/material/form-field";
|
|
||||||
import { MatIconModule } from "@angular/material/icon";
|
|
||||||
import { MatInputModule } from "@angular/material/input";
|
|
||||||
import { MatPaginatorModule } from "@angular/material/paginator";
|
|
||||||
import { MatProgressSpinnerModule } from "@angular/material/progress-spinner";
|
|
||||||
import { MatProgressBarModule } from "@angular/material/progress-bar";
|
|
||||||
import { MatSelectModule } from "@angular/material/select";
|
|
||||||
import { MatTableModule } from "@angular/material/table";
|
|
||||||
import { MatTabsModule } from "@angular/material/tabs";
|
|
||||||
import { MatDialogModule } from "@angular/material/dialog";
|
|
||||||
import { MatCardModule } from "@angular/material/card";
|
|
||||||
import { MatRadioModule } from "@angular/material/radio";
|
|
||||||
import { MatSidenavModule } from "@angular/material/sidenav";
|
|
||||||
import { MatListModule } from "@angular/material/list";
|
|
||||||
import { MatToolbarModule } from "@angular/material/toolbar";
|
|
||||||
import { provideCharts, withDefaultRegisterables } from "ng2-charts";
|
|
||||||
|
|
||||||
import { JwtAuthInterceptor } from "../interceptor/jwt-auth.interceptor";
|
|
||||||
import { ErrorInterceptor } from "../interceptor/error.interceptor";
|
|
||||||
|
|
||||||
const appRoutes: Routes = [
|
|
||||||
{
|
|
||||||
path: "",
|
|
||||||
component: DefaultComponent,
|
|
||||||
canActivate: [AuthGuardService],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "summary",
|
|
||||||
component: SummaryComponent,
|
|
||||||
canActivate: [AuthGuardService],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "jumps",
|
|
||||||
component: ListOfJumpsComponent,
|
|
||||||
canActivate: [AuthGuardService],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "dzs",
|
|
||||||
component: ListOfDzsComponent,
|
|
||||||
canActivate: [AuthGuardService],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "newjump",
|
|
||||||
component: NewJumpComponent,
|
|
||||||
canActivate: [AuthGuardService],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "aircrafts",
|
|
||||||
component: ListOfAircraftsComponent,
|
|
||||||
canActivate: [AuthGuardService],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "jumpTypes",
|
|
||||||
component: ListOfJumpTypesComponent,
|
|
||||||
canActivate: [AuthGuardService],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "gears",
|
|
||||||
component: ListOfGearsComponent,
|
|
||||||
canActivate: [AuthGuardService],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "user",
|
|
||||||
component: UserProfileComponent,
|
|
||||||
canActivate: [AuthGuardService],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "newTunnelFlight",
|
|
||||||
component: NewTunnelFlightComponent,
|
|
||||||
canActivate: [AuthGuardService],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "tunnelFlights",
|
|
||||||
component: ListOfTunnelFlightsComponent,
|
|
||||||
canActivate: [AuthGuardService],
|
|
||||||
},
|
|
||||||
|
|
||||||
{ path: "login", component: LoginComponent },
|
|
||||||
];
|
|
||||||
|
|
||||||
// AOT compilation support
|
|
||||||
export function httpTranslateLoader(http: HttpClient) {
|
|
||||||
return new TranslateHttpLoader(http);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Déclaration de la fonction d'initialisation de la configuration
|
|
||||||
export function initConfig(configService: ConfigurationHelper) {
|
|
||||||
return () => configService.load(environment.env);
|
|
||||||
}
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [
|
|
||||||
AppComponent,
|
|
||||||
SummaryComponent,
|
|
||||||
ListOfJumpsComponent,
|
|
||||||
ListOfDzsComponent,
|
|
||||||
NewJumpComponent,
|
|
||||||
ListOfAircraftsComponent,
|
|
||||||
ListOfJumpTypesComponent,
|
|
||||||
ListOfGearsComponent,
|
|
||||||
NewAircraftComponent,
|
|
||||||
NewGearComponent,
|
|
||||||
NewDropZoneComponent,
|
|
||||||
NewJumpTypeComponent,
|
|
||||||
DefaultComponent,
|
|
||||||
LoginComponent,
|
|
||||||
CreateUserComponent,
|
|
||||||
LoginUserComponent,
|
|
||||||
UserProfileComponent,
|
|
||||||
ListOfImagesComponent,
|
|
||||||
JumpInfosComponent,
|
|
||||||
NewTunnelFlightComponent,
|
|
||||||
ListOfTunnelFlightsComponent,
|
|
||||||
],
|
|
||||||
imports: [
|
|
||||||
RouterModule.forRoot(appRoutes, { enableTracing: !environment.production }),
|
|
||||||
TranslateModule.forRoot({
|
|
||||||
loader: {
|
|
||||||
provide: TranslateLoader,
|
|
||||||
useFactory: httpTranslateLoader,
|
|
||||||
deps: [HttpClient],
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
ReactiveFormsModule,
|
|
||||||
FormsModule,
|
|
||||||
BrowserModule,
|
|
||||||
BrowserAnimationsModule,
|
|
||||||
MatPaginatorModule,
|
|
||||||
MatTableModule,
|
|
||||||
MatSelectModule,
|
|
||||||
MatOptionModule,
|
|
||||||
MatFormFieldModule,
|
|
||||||
MatCheckboxModule,
|
|
||||||
MatDatepickerModule,
|
|
||||||
MatNativeDateModule,
|
|
||||||
MatInputModule,
|
|
||||||
MatButtonModule,
|
|
||||||
MatIconModule,
|
|
||||||
MatAutocompleteModule,
|
|
||||||
MatProgressSpinnerModule,
|
|
||||||
MatProgressBarModule,
|
|
||||||
MatTabsModule,
|
|
||||||
MatDialogModule,
|
|
||||||
MatCardModule,
|
|
||||||
MatRadioModule,
|
|
||||||
MatSidenavModule,
|
|
||||||
MatListModule,
|
|
||||||
MatToolbarModule,
|
|
||||||
],
|
|
||||||
exports: [HttpClientModule],
|
|
||||||
providers: [
|
|
||||||
TunnelService,
|
|
||||||
TunnelFlightService,
|
|
||||||
ImageService,
|
|
||||||
AircraftService,
|
|
||||||
DropzoneService,
|
|
||||||
GearService,
|
|
||||||
JumpService,
|
|
||||||
JumpTypeService,
|
|
||||||
StatsService,
|
|
||||||
ServiceComm,
|
|
||||||
DateService,
|
|
||||||
RequestCache,
|
|
||||||
ConfigurationHelper,
|
|
||||||
DatePipe,
|
|
||||||
ServiceCacheApi,
|
|
||||||
provideAppInitializer(() => {
|
|
||||||
const initializerFn = initConfig(inject(ConfigurationHelper));
|
|
||||||
return initializerFn();
|
|
||||||
}),
|
|
||||||
{ provide: HTTP_INTERCEPTORS, useClass: JwtAuthInterceptor, multi: true },
|
|
||||||
{ provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },
|
|
||||||
provideCharts(withDefaultRegisterables()),
|
|
||||||
],
|
|
||||||
bootstrap: [AppComponent],
|
|
||||||
})
|
|
||||||
export class AppModule {}
|
|
||||||
@@ -6,6 +6,9 @@ import { MatOptionModule } from "@angular/material/core";
|
|||||||
import { MatCardModule } from "@angular/material/card";
|
import { MatCardModule } from "@angular/material/card";
|
||||||
import { MatTabsModule } from "@angular/material/tabs";
|
import { MatTabsModule } from "@angular/material/tabs";
|
||||||
|
|
||||||
|
import { LoginUserComponent } from "../login-user/login-user.component";
|
||||||
|
import { CreateUserComponent } from "../create-user/create-user.component";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-login",
|
selector: "app-login",
|
||||||
templateUrl: "./login.component.html",
|
templateUrl: "./login.component.html",
|
||||||
@@ -17,6 +20,8 @@ import { MatTabsModule } from "@angular/material/tabs";
|
|||||||
MatOptionModule,
|
MatOptionModule,
|
||||||
MatCardModule,
|
MatCardModule,
|
||||||
MatTabsModule,
|
MatTabsModule,
|
||||||
|
LoginUserComponent,
|
||||||
|
CreateUserComponent,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class LoginComponent implements OnInit {
|
export class LoginComponent implements OnInit {
|
||||||
|
|||||||
Reference in New Issue
Block a user