Javascript 在Ionic 5中ngDestroy和路由更改后,setInterval继续运行
我有一个具有以下功能的模式(页面):Javascript 在Ionic 5中ngDestroy和路由更改后,setInterval继续运行,javascript,angular,ionic5,Javascript,Angular,Ionic5,我有一个具有以下功能的模式(页面): private countdownTime : number = 20; private logoutCountdown : any; ngOnInit() { this.startLogout(); } ngOnDestroy(){ clearInterval(this.logoutCountdown); } startLogout(){ this.logoutCountdown = setInte
private countdownTime : number = 20;
private logoutCountdown : any;
ngOnInit() {
this.startLogout();
}
ngOnDestroy(){
clearInterval(this.logoutCountdown);
}
startLogout(){
this.logoutCountdown = setInterval(() => {
this.countdownTime--;
console.log(this.countdownTime);
if (this.countdownTime == 0) {
this.logout();
}
}, 1000)
}
closeModal(){
clearInterval(this.logoutCountdown);
this.modal.dismiss();
}
logout(){
clearInterval(this.logoutCountdown);
this.modal.dismiss();
this.auth.logout().then();
}
20秒后,它关闭,但仍在另一个路由中运行setInterval,是否有理由在该页面中clearInterval不工作?这与app.module.ts imports中的modal的PageModule有一定关系?查看您的代码后,不清楚出了什么问题。我能想到的唯一一件事是,您无意中创建了多个模态或其他对象的实例。您可以尝试将
logoutCountdown
和countdown
变量提取到singleton服务中,以便确保一次只运行一个间隔。您是否有stackblitz?您的代码看起来应该可以调用Ngondestory吗?你有没有为你的模特检查过?在离子模态中,它们不是真正的惰性加载,而是作为模块的一部分加载。因此,它们可能会一直保存在内存中,直到承载modal的模块被销毁。