我需要每30秒刷新一次角度分量数据。我使用简单的setInterval
:
this.interval = setInterval(() => {
this.refresh(); // api call
}, 10000);
但是,这是不正确的,因为即使我导航到另一个“页面”(在角度SPA中,所有内容都是一页,所以实际上不是另一页),每30秒就会进行刷新。
仅在特定页面/组件上,每30秒刷新一次数据的正确方法是什么?
答案 0 :(得分:3)
您可以破坏组件的OnDestroy
生命周期挂钩上的间隔。
使用clearInterval(this.interval)
ngOnDestroy() {
if (this.interval) {
clearInterval(this.interval);
}
}
答案 1 :(得分:0)
尝试一下。
routerOnActivate() {
this.interval = setInterval(() => {
this.refresh(); // api call
}, 10000);
}
routerOnDeactivate() {
clearInterval(this.interval);
}
答案 2 :(得分:0)
您可以在组件的spark.driver.extraJavaOptions
生命周期挂钩中清除Interval
ngOnDestroy
ngOnDestroy() { clearInterval(this.interval); }
会在摘要周期中每次销毁组件时调用,并且也会清除间隔(如果这样做)。 通常用于在当前路线导航到另一条路线后调用不需要的逻辑。
答案 3 :(得分:0)
导航到另一页时,必须清除设置的间隔。
this.interval = setInterval(()=>{
...
});
navigateToAnotherPage = () => {
//function to navigate to another page
clearInterval(this.interval);
router.navigate(...)//if you are using router to navigate
}
答案 4 :(得分:0)
试试这个。
save: boolean = false;
autoSave() {
setInterval(() => {
console.log('setTimeOut');
this.save = true;
}, 1000);
}