Angular 6 ngOnInit 在单击浏览器的后退按钮时不触发



我在涉及参数的路由方面遇到问题。当我尝试使用浏览器的后退按钮返回时,上一个组件的ngonit不会启动。

使用角度教程再现错误的步骤:

  • 从下载教程https://angular.io/tutorial并运行npm install
  • 使用命令ng build --prod --build-optimizerng build --prod构建应用程序
  • 将上一步生成的静态文件上传到nginx或apache服务器,相应的配置文件在angular文档中具有推荐的代码行。https://angular.io/guide/deployment
  • 单击仪表板中排名靠前的英雄之一
  • 单击浏览器的后退按钮

通过执行这些步骤,您将看到面板中没有加载顶级英雄,这与我的应用程序遇到的问题完全相同。这是因为当使用返回按钮返回时,ngOnInit不会被调用。

需要注意的几点是:
此问题仅在使用Firefox、Chrome或Opera时出现
使用开发模式ng serve时不会出现此问题
我更新到angular 7,但仍然有同样的问题。

有什么办法可以解决这个问题吗?我在angular的回购问题上没有发现任何关于这一点的信息。

你应该找到这样的东西:

this._router.events.subscribe(event => {
// ... yourcode
});

最新更新