import { NgModule, Injectable, APP_INITIALIZER } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppRoutingModule } from './app-routing.module'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { HttpClientModule, HttpInterceptor, HttpHandler, HttpRequest, HTTP_INTERCEPTORS } from '@angular/common/http'; import { MaterialModule } from './material/material.module'; import { QRCodeModule } from 'angularx-qrcode'; import { I18nPipe } from './utils/i18n.pipe'; import { HomeComponent, ImprintComponent, PrivacyPolicyComponent } from './pages/home/home.component'; import { HomeClubComponent } from './pages/home/club/home-club.component'; import { HomeGeneralComponent } from './pages/home/general/home-general.component'; import { HomePrivacyComponent } from './pages/home/privacy/home-privacy.component'; import { HomeServicesComponent } from './pages/home/services/home-services.component'; import { AccountComponent } from './pages/account/account.component'; import { AppsComponent } from './pages/apps/apps.component'; import { AppComponent } from './app.component'; import { LoginComponent } from './pages/login/login.component'; import { LoginTotpComponent } from './pages/login-totp/login-totp.component'; import { FormLoginComponent } from './pages/form-login/form-login.component'; import { FormLoginTotpComponent } from './pages/form-login-totp/form-login-totp.component'; import { TokensComponent } from './pages/tokens/tokens.component'; import { PermissionsComponent } from './ui/permissions/permissions.component'; import { QuotasComponent } from './ui/quotas/quotas.component'; import { SecurityComponent, SecurityTotpDialog } from './pages/account/security/security.component'; import { VoucherComponent } from './pages/account/voucher/voucher.component'; import { VoucherDialog } from './pages/account/voucher/voucher.component'; import { InfoComponent } from './pages/account/info/info.component'; import { PasswordComponent } from './pages/password/password.component'; import { PasswordResetComponent } from './pages/password-reset/password-reset.component'; import { RegisterComponent, RegisterDialog } from './pages/register/register.component'; import { UsernameDialog } from './pages/register/username-dialog/username.dialog'; import { UnavailableComponent } from './pages/unavailable/unavailable.component'; import { NotfoundComponent } from './pages/notfound/notfound.component'; import { HtmlComponent } from './utils/html/html.component'; import { I18nService } from './services/i18n.service'; export function init_app(i18n: I18nService) { return () => i18n.fetch(i18n.getLocale()).then(response => { }, error => { }); } @Injectable() export class XhrInterceptor implements HttpInterceptor { intercept(req: HttpRequest, next: HttpHandler) { const xhr = req.clone({ headers: req.headers.set('X-Requested-With', 'XMLHttpRequest').set('Content-Type', 'application/json;charset=UTF-8'), withCredentials: true }); return next.handle(xhr); } } @NgModule({ declarations: [ I18nPipe, AppComponent, HomeComponent, ImprintComponent, PrivacyPolicyComponent, HomeClubComponent, HomeGeneralComponent, HomePrivacyComponent, HomeServicesComponent, AccountComponent, LoginComponent, LoginTotpComponent, FormLoginComponent, FormLoginTotpComponent, TokensComponent, AppsComponent, PermissionsComponent, QuotasComponent, SecurityComponent, SecurityTotpDialog, VoucherComponent, VoucherDialog, InfoComponent, PasswordComponent, PasswordResetComponent, RegisterComponent, RegisterDialog, UsernameDialog, UnavailableComponent, NotfoundComponent, HtmlComponent ], imports: [ BrowserModule, AppRoutingModule, BrowserAnimationsModule, MaterialModule, HttpClientModule, FormsModule, ReactiveFormsModule, QRCodeModule, ], exports: [MaterialModule], providers: [{ provide: APP_INITIALIZER, useFactory: init_app, deps: [I18nService], multi: true }, { provide: HTTP_INTERCEPTORS, useClass: XhrInterceptor, multi: true }], bootstrap: [AppComponent], }) export class AppModule { }