超时后检查当前组件

时间:2018-06-07 09:59:03

标签: html angular routes timeout angular-activatedroute

我在一个名为“recoger_success”的组件中,我希望它在点击与其相关联的倒计时()的按钮10秒后导航到主组件。问题是,如果我在超时达到0之前导航到另一个组件,那么在10秒之后无论我在哪个组件中,它总是会转到home组件。我不希望这样我只希望它转到主组件,如果用户仍然在超时组件上,否则忽略它..

我试过这个知道实际组件的url但它不起作用..

countdown(){
  setTimeout(() => {
    if (this.route.snapshot.url.toString() == 'recoger_success'){
        this.router.navigate([""]);
    }
  }, 10000);

}

apreciate任何帮助。

2 个答案:

答案 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);
    }
  }
}