// Angular imports // import { NgModule, Injector, APP_INITIALIZER } from '@angular/core'; import { UpgradeModule } from '@angular/upgrade/static'; import { BrowserModule } from '@angular/platform-browser'; import { HttpModule } from '@angular/http'; // Todo check to remove /vile 8/22/2017 import { LOCATION_INITIALIZED } from '@angular/common'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import {HttpClientModule, HttpClient} from '@angular/common/http'; // Application specific imports // import { TranslateModule, TranslateLoader, TranslateService } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; // Components // import { AppComponent } from './app.component'; // Modules // import { AppRoutingModule } from './app.routing'; import { MaeklarObjektModule } from './components/maeklarObjekt/maeklar-objekt.module'; import { ExempelkomponenterModule } from './components/exempelkomponenter/exempelkomponenter.module'; import { AnteckningModule, FbCommonPipesModule } from '@fb/common'; import { DatepickerModule } from 'ngx-bootstrap/datepicker'; import { CleanCacheModule } from './components/cleanCache/clean-cache.module'; import { SaeljdrivModule } from './components/saeljdriv/saeljdriv.module'; import { FbBroadcastModule } from '@fb/broadcast'; import { FbMapsModule } from '@fb/maps'; import { FbSideDrawerModule } from './components/sideDrawer/sideDrawer.module'; import { SearchModule } from './components/search/search.module'; // Directives // // Pipes // // Other // import * as statics from '@fb/statics'; export function createTranslateLoader(http: HttpClient): TranslateHttpLoader { // För AOT return new TranslateHttpLoader(http, '../app/Languages/', '.json'); } // Awaits the async call for the language files export function appInitializerFactory(translate: TranslateService, injector: Injector): any { return () => new Promise((resolve: any) => { const locationInitialized: any = injector.get(LOCATION_INITIALIZED, Promise.resolve(null)); locationInitialized.then(() => { const defaultLanguage: string = 'sv_SE'; translate.setDefaultLang(defaultLanguage); translate.use(defaultLanguage).subscribe(() => { resolve(null); }); }); }); } // Build application module @NgModule({ imports: [ BrowserAnimationsModule, BrowserModule, AppRoutingModule, HttpModule, HttpClientModule, UpgradeModule, AnteckningModule, FbBroadcastModule, DatepickerModule.forRoot(), FbCommonPipesModule.forRoot(), TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: (createTranslateLoader), deps: [HttpClient] } }), MaeklarObjektModule, ExempelkomponenterModule, CleanCacheModule, SaeljdrivModule, FbMapsModule, FbSideDrawerModule, SearchModule ], declarations: [ AppComponent ], providers: [ { provide: APP_INITIALIZER, useFactory: appInitializerFactory, deps: [TranslateService, Injector], multi: true } ], bootstrap: [AppComponent] // Enterypoint for Angular X }) export class AppModule { constructor(private readonly injector: Injector) { statics.ServiceLocator.injector = this.injector; } }