Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 路线以角度2变化时的结束间隔_Javascript_Angular_Typescript_Angular2 Routing - Fatal编程技术网

Javascript 路线以角度2变化时的结束间隔

Javascript 路线以角度2变化时的结束间隔,javascript,angular,typescript,angular2-routing,Javascript,Angular,Typescript,Angular2 Routing,我在路由器出口内的角度2组件中启动计时器 setInterval(() => { ... }, 10000); 当我离开嵌入组件的路径时,计时器不会退出。我怎样才能做到这一点呢?这应该可以做到: routerOnActivate() { this.timer = setInterval(()=>{ ... }, 10000); } routerOnDeactivate() { clearInterval(th

我在路由器出口内的角度2组件中启动计时器

setInterval(() => {
    ...
}, 10000);
当我离开嵌入组件的路径时,计时器不会退出。我怎样才能做到这一点呢?

这应该可以做到:

routerOnActivate() {
  this.timer = setInterval(()=>{
                ...
            }, 10000);
}

routerOnDeactivate() {
  clearInterval(this.timer);
}

你可以从这个钩子上清除间隔。 从组件/视图控制矿山

export classTestInterval implements OnInit, OnDestroy{
     public timerInterval:any;
     ngOnInit(){
       // Need interval scope in the component could be from somewhere else, but we need scope to be able to clear it on destruction of component.
       this.timerInterval = setInterval(function(){...},10000);
     }
     ngOnDestroy() {
        // Will clear when component is destroyed e.g. route is navigated away from.
        clearInterval(this.timerInterval);
     }
}

也许你想要的是从
angular2/router
启动
OnActivate
(也可能是
OnActivate
,取决于你的用例),因为你说过如果我理解正确,你想在用户离开路线时结束计时器

export Compnent implements OnInit, OnDeactivate {
    private timer;

    ngOnInit(){
        this.timer = setInterval(_ => {
            // disco
        }, 10000);
    }

    routerOnDeactivate() {
        clearInterval(this.timer);
    }
}