import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { NgModule, Provider, APP_INITIALIZER } from '@angular/core'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { HomeComponent } from './control-panel/home/home.component'; import { HttpClientModule, HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http'; import { AlertModule } from 'ngx-bootstrap/alert'; import { BsDatepickerModule } from 'ngx-bootstrap/datepicker'; import { BsDropdownModule } from 'ngx-bootstrap/dropdown'; import { CarouselModule } from 'ngx-bootstrap/carousel'; import { BorderCardDirective } from './_helpers/_directives/border-card.directive'; import { ToolbarModule } from 'primeng/toolbar'; import { ButtonModule } from 'primeng/button'; import { SplitButtonModule } from 'primeng/splitbutton'; import { DialogModule } from 'primeng/dialog'; import { InputTextModule } from 'primeng/inputtext'; import { ApiConfiguration } from './_api/api-configuration'; import { AppService } from './_services/app.service'; import { FormsModule } from '@angular/forms'; import { CalendarModule } from 'primeng/calendar'; import { ConfirmDialogModule } from 'primeng/confirmdialog'; import { ConfirmationService, MessageService, MenuItem } from 'primeng/api'; import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; import { AuthenticationService } from './_services/authentication.service'; import { AutomationComponent } from './control-panel/profile/automation/automation.component'; import { NotFoundComponent } from './control-panel/not-found/not-found.component'; import { ProfileComponent } from './control-panel/profile/profile/profile.component'; import { EditProfileComponent } from './control-panel/profile/edit-profile/edit-profile.component'; import { JwtInterceptor } from './_helpers/jwt.interceptor'; import { ErrorInterceptor } from './_helpers/error.interceptor'; import { NotificationsService } from './_services/notifications.service'; import { ToastModule } from 'primeng/toast'; import { DropdownModule } from 'primeng/dropdown'; import { EditAutomationComponent } from './control-panel/profile/automation/edit-automation/edit-automation.component'; import { DevicesComponent } from './control-panel/profile/devices/devices.component'; import { DashboardComponent } from './control-panel/profile/dashboard/dashboard.component'; import { BetComponent } from './control-panel/bet/bet.component'; import { PanelMenuModule } from 'primeng/panelmenu'; import { EnergyComponent } from './control-panel/profile/dashboard/energy/energy.component'; import { SidebarDashboardComponent, SidebarNavItemComponent, SidebarNavDropItemComponent } from './control-panel/profile/dashboard/sidebar/sidebarDashboard.component'; export function initApiConfiguration(config: ApiConfiguration): Function { return () => { config.rootUrl = 'https://localhost:5001'; // None = same rooturl }; } export const INIT_API_CONFIGURATION: Provider = { provide: APP_INITIALIZER, useFactory: initApiConfiguration, deps: [ApiConfiguration], multi: true }; // AoT requires an exported function for factories export function HttpLoaderFactory(http: HttpClient) { return new TranslateHttpLoader(http); } @NgModule({ declarations: [ AppComponent, HomeComponent, BorderCardDirective, AutomationComponent, NotFoundComponent, ProfileComponent, EditProfileComponent, EditAutomationComponent, DevicesComponent, DashboardComponent, BetComponent, EnergyComponent, SidebarDashboardComponent, SidebarNavItemComponent, SidebarNavDropItemComponent ], imports: [ BrowserModule, BrowserAnimationsModule, AppRoutingModule, AlertModule.forRoot(), BsDatepickerModule.forRoot(), BsDropdownModule.forRoot(), CarouselModule.forRoot(), ToolbarModule, ButtonModule, SplitButtonModule, DialogModule, InputTextModule, HttpClientModule, FormsModule, CalendarModule, ConfirmDialogModule, ToastModule, DropdownModule, PanelMenuModule, TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient] } }) ], providers: [ INIT_API_CONFIGURATION, AppService, AuthenticationService, ConfirmationService, NotificationsService, MessageService, { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true }, { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }, ], bootstrap: [AppComponent] }) export class AppModule { }