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

时间:2018-10-26 23:08:55

标签: 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时不会出现此问题。
我已更新为angular 7,但仍然遇到相同的问题。

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

1 个答案:

答案 0 :(得分:0)

您应该使用类似的方法:

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