You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
644 B
20 lines
644 B
5 years ago
|
import { enableProdMode, NgModuleRef, ApplicationRef } from '@angular/core';
|
||
|
import { createNewHosts } from '@angularclass/hmr';
|
||
|
|
||
|
export function hmrBootstrap(module: any, bootstrap: () => Promise<NgModuleRef<any>>) {
|
||
|
let ngModule: NgModuleRef<any>;
|
||
|
module.hot.accept();
|
||
|
|
||
|
bootstrap()
|
||
|
.then(mod => (ngModule = mod))
|
||
|
.catch(err => console.error(err));
|
||
|
|
||
|
module.hot.dispose(() => {
|
||
|
const appRef: ApplicationRef = ngModule.injector.get(ApplicationRef);
|
||
|
const elements = appRef.components.map(c => c.location.nativeElement);
|
||
|
const makeVisible = createNewHosts(elements);
|
||
|
ngModule.destroy();
|
||
|
makeVisible();
|
||
|
});
|
||
|
}
|