import { ApplicationRef, NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; import { HomeComponent } from './home/home.component'; import { ApiService } from './shared'; import { routing } from './app.routing'; import { createNewHosts, removeNgStyles } from '@angularclass/hmr'; import { BrowseSdcModule } from './browseSdc/browseSdc.module'; import { VlanTaggingModule } from './vlanTagging/vlan-tagging.module' import { BootstrapModalModule } from 'ng2-bootstrap-modal'; import { HashLocationStrategy, LocationStrategy } from "@angular/common"; import { InstantiationStatusModule } from './instantiationStatus/InstantiationStatus.module'; import { SharedModule } from './shared/shared.module'; import { AngularSvgIconModule } from 'angular-svg-icon'; import { NgReduxModule } from '@angular-redux/store'; import { StoreModule } from "./store/module"; import { HttpInterceptorService } from './shared/utils/httpInterceptor/httpInterceptor.service'; import { DrawingBoardModule } from './drawingBoard/drawingBoard.module'; import { HealthStatusComponent } from './healthStatus/health-status.component'; import { ScrollToModule } from '@nicky-lenaers/ngx-scroll-to'; import { LogService } from './shared/utils/log/log.service'; @NgModule({ imports: [ BrowserModule, HttpClientModule, FormsModule, routing, SharedModule.forRoot(), ScrollToModule.forRoot(), DrawingBoardModule, VlanTaggingModule, InstantiationStatusModule, BrowseSdcModule, BootstrapModalModule, BrowseSdcModule, AngularSvgIconModule, ReactiveFormsModule, NgReduxModule, StoreModule, ], declarations: [ AppComponent, HomeComponent, HealthStatusComponent ], providers: [ ApiService, LogService, { provide: LocationStrategy, useClass: HashLocationStrategy }, { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true } ], bootstrap: [AppComponent] }) export class AppModule { private static CustomLoader: any; constructor(public appRef: ApplicationRef) { //for ng2-bootstrap-modal in angualar 5 Object.defineProperty(appRef, '_rootComponents', { get: () => appRef['components'] }); } hmrOnInit(store) { console.log('HMR store', store); } hmrOnDestroy(store) { let cmpLocation = this.appRef.components.map(cmp => cmp.location.nativeElement); // recreate elements store.disposeOldHosts = createNewHosts(cmpLocation); // remove styles removeNgStyles(); } hmrAfterDestroy(store) { // display new elements store.disposeOldHosts(); delete store.disposeOldHosts; } }