我想弄清楚Angular 2中的ngOnDestroy是在刷新时运行还是当有人离开页面时?
答案 0 :(得分:25)
在刷新时或离开当前页面时,将不会调用ngOnDestroy
。该应用程序将被浏览器销毁。
只有当Angular2从DOM中删除组件,因为您离开或在动态创建的组件上调用destroy()
时,才会调用ngOnDestroy()
。
如果您需要在浏览器销毁应用程序之前采取某些措施,您可以自己聆听beforeunload
和unload
。
另见
答案 1 :(得分:0)
你可以做一件事,它就像一个魅力。 创建一个测试保护并应用于您的组件。
使用BehavioralSubject创建服务。每当进入你的组件时,警卫会检查并在警卫中初始化你的主题,当它被初始化时,它将检查它是否在某处被订阅。在ngOnInit的组件中订阅此主题,然后调用destroy方法。