首页 > 解决方案 > Angular - 仅在第一次加载时触发的代码

问题描述

我在 Angular 9 中为我的应用程序创建了一个骨架结构。骨架代码在 ngAfterViewInit()钩子中初始化。

ngAfterViewInit() {
    this.showSpinner = false;  
     this.interval = setInterval(() => {  
       this.domLoaded = true;
     }, 5000);
}

但是每次我加载此页面(或从任何其他路线导航后再次访问)时,它仍然会触发事件以显示骨架。我希望骨架只显示在第一个加载应用程序上。

我也用过ngAfterContentInit()但是没用

标签: angular

解决方案


有很多方法可以解决这个问题(另外,我同意 Pardeep 的评论 - 你应该寻找其他方法)但坚持你的问题,尝试将状态保存在 localStorage/sessionStorage 中,以便信息是导航到您网站中的其他页面后不会丢失。所以这样的事情会起作用:

ngAfterViewInit() {
  this.showSpinner = false; 
  if (!sessionStorage.getItem('siteInit')) {  
   this.interval = setInterval(() => {  
    this.domLoaded = true;
    sessionStorage.setItem('siteInit', 'true');
   }, 5000);
  } else {
   this.domLoaded = true;
  }
}

推荐阅读