我在一个名为“recoger_success”的组件中,我希望它在点击与其相关联的倒计时()的按钮10秒后导航到主组件。问题是,如果我在超时达到0之前导航到另一个组件,那么在10秒之后无论我在哪个组件中,它总是会转到home组件。我不希望这样我只希望它转到主组件,如果用户仍然在超时组件上,否则忽略它..
我试过这个知道实际组件的url但它不起作用..
countdown(){
setTimeout(() => {
if (this.route.snapshot.url.toString() == 'recoger_success'){
this.router.navigate([""]);
}
}, 10000);
}
apreciate任何帮助。
答案 0 :(得分:1)
将超时分配给变量,并在手动存在页面时清除超时
countdown(){
this.timeout = setTimeout(() => {
if (this.route.snapshot.url.toString() == 'recoger_success'){
this.router.navigate([""]);
}
}, 10000);
}
function myStopFunction() {
clearTimeout(this.timeout);
}
答案 1 :(得分:0)
您需要将setTimeout绑定到变量。
<强> component.ts 强>
import { Component, OnDestroy } from '@angular/core';
export class Component implements OnDestroy {
countdownTimer: any;
countdown() {
if (this.countdownTimer) {
clearInterval(this.countdownTimer);
}
this.countdownTimer = setTimeout(() => {
if (this.route.snapshot.url.toString() == 'recoger_success') {
this.router.navigate([""]);
}
}, 10000);
}
ngOnDestroy() {
if (this.countdownTimer) {
clearInterval(this.countdownTimer);
}
}
}