【发布时间】:2019-04-08 13:04:41
【问题描述】:
我有以下代码来检测使用角度 6 的后退按钮按下。
import { Location } from '@angular/common';
export class ProductsComponent implements OnInit {
constructor( private location: Location){
this.handleBackButtonPress();
}
handleBackButtonPress() {
this.subscribed = true;
this.location.subscribe(redirect => {
if (redirect.pop === true) {
alert('this is a backbutton click');
}
});
}
}
这是有效的,我们在按下后退按钮时收到警报。问题是,如果我们多次访问同一个页面,它会触发警报,显示我们访问具有相同组件的路由的次数。
注意:
我已经检查了类似this.location.unsubscribe() 的解决方案,但没有找到类似location 的功能。
【问题讨论】:
-
关于退订:stackoverflow.com/questions/48729990/… 。关于解决方案:当浏览器的事件 onbeforeunload 被触发时,您应该 unsubscribe。否则,
ngOnDestroy将不会被调用,因为它不会直接从角度破坏组件。
标签: javascript angular typescript