-import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-import { decorateModuleRef } from './app/environment';
-import { bootloader } from '@angularclass/hmr';
-/*
- * App Module
- * our top level module that holds all of our components
- */
-import { AppModule } from './app';
+import { ApplicationRef, enableProdMode } from '@angular/core'
+import { enableDebugTools } from '@angular/platform-browser'
+import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
+import { AppModule } from './app/app.module'
+import { environment } from './environments/environment'
-/*
- * Bootstrap our Angular app with a top level NgModule
- */
-export function main(): Promise<any> {
- return platformBrowserDynamic()
- .bootstrapModule(AppModule)
- .then(decorateModuleRef)
- .catch(err => console.error(err));
+if (environment.production) {
+ enableProdMode()
}
-bootloader(main);
+const bootstrap = () => platformBrowserDynamic()
+ .bootstrapModule(AppModule)
+ .then(bootstrapModule => {
+ if (!environment.production) {
+ const applicationRef = bootstrapModule.injector.get(ApplicationRef)
+ const componentRef = applicationRef.components[0]
+
+ // allows to run `ng.profiler.timeChangeDetection();`
+ enableDebugTools(componentRef)
+ }
+
+ return bootstrapModule
+ })
+ .catch(err => {
+ console.error(err)
+ return null
+ })
+
+bootstrap()