【问题标题】:Stop browser reload of an angular4 application even after changes即使在更改后也停止浏览器重新加载 angular4 应用程序
【发布时间】:2018-02-07 19:14:03
【问题描述】:

当我们在实时 angular4 应用程序中进行更改时,有什么方法可以阻止浏览器重新加载。 所以基本上我正在寻找的是 - 当您在 angular4 应用程序中进行更改时,浏览器应该在不重新加载的情况下呈现这些更改。因此,最终用户无需重新加载页面即可实时查看更改。 此外,每次我们进行任何更改时,我们都必须构建应用程序吗?有没有办法不构建它并在 DOM 上呈现更改。

【问题讨论】:

  • 你能更具体地了解一下什么样的变化吗?如果您正在谈论代码更改,那么是的,需要重新构建组件才能识别代码更改。还是您在谈论数据更改?
  • 代码更改。 @DeborahK

标签: angular browser


【解决方案1】:

有一个特殊的工具叫做 angular-hmr。您可以在此链接中找到它 - https://www.npmjs.com/package/@angularclass/hmr

安装后,您可以在 main.ts 中编写此代码:

export const hmrBootstrap = (module: any, bootstrap: () => 
 Promise<NgModuleRef<any>>) => {
 let ngModule: NgModuleRef<any>;
   module.hot.accept();
   bootstrap().then(mod => ngModule = mod);
     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();
     });
   };
  hmrBootstrap(module, bootstrap);

这应该取代你的

platformBrowserDynamic().bootstrapModule(AppModule);

每次保存后,结果将是一个不闪烁的更新应用程序。只是不要忘记将其仅用于开发。

【讨论】:

  • 感谢您的回答。我在hmrBootstrap(module, bootstrap) 中收到错误cannot find name bootstrap
猜你喜欢
  • 1970-01-01
  • 2020-11-14
  • 2013-08-20
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多