-import { enableProdMode } from '@angular/core'
+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'
-import { hmrBootstrap } from './hmr'
-
if (environment.production) {
enableProdMode()
}
const bootstrap = () => platformBrowserDynamic()
.bootstrapModule(AppModule)
+ .then(bootstrapModule => {
+ // TODO: Uncomment and remove unregistration when https://github.com/angular/angular/issues/21191 is fixed
+ // TODO: Remove when https://github.com/angular/angular-cli/issues/8779 is fixed?
+ // if ('serviceWorker' in navigator && environment.production) {
+ // navigator.serviceWorker.register('/ngsw-worker.js')
+ // .catch(err => console.error('Cannot register service worker.', err))
+ // }
-if (environment.hmr) {
- if (module[ 'hot' ]) {
- hmrBootstrap(module, bootstrap)
- } else {
- console.error('HMR is not enabled for webpack-dev-server!')
- console.log('Are you using the --hmr flag for ng serve?')
- }
-} else {
- bootstrap()
-}
+ if (navigator.serviceWorker && typeof navigator.serviceWorker.getRegistrations === 'function') {
+ navigator.serviceWorker.getRegistrations()
+ .then(registrations => {
+ for (const registration of registrations) {
+ registration.unregister()
+ }
+ })
+ }
+
+ 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()