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

Rob*_*ert 5 angular angular6

我遇到涉及参数的路由问题。当我尝试使用浏览器的后退按钮返回时,前一个组件的ngoninit不会触发。

重现Angular教程中的错误的步骤:

  • https://angular.io/tutorial下载该教程并运行npm install
  • 构建应用程序使用命令ng build --prod --build-optimizerng build --prod
  • 将上一步生成的静态文件与相应的配置文件一起上传到Nginx或apache服务器,该配置文件在angular docs中具有推荐的代码行。https://angular.io/guide/deployment
  • 单击信息中心中的顶级英雄之一。
  • 单击浏览器的后退按钮。

通过执行这些步骤,您将看到仪表板上未加载顶级英雄,这与我的应用程序存在的问题完全相同。这是因为专门使用“后退”按钮返回时未调用ngOnInit。

注意事项:
此问题仅在使用Firefox,Chrome或Opera时发生。
使用开发模式时不会出现此问题ng serve
我更新到角度7,仍然有相同的问题。

有什么办法可以解决这个问题?在angular的repo问题中,我什么都没找到。

小智 1

你应该这样理解:

this._router.events.subscribe(event => {
    // ... yourcode
});
Run Code Online (Sandbox Code Playgroud)