首页 > 解决方案 > 如果发生令牌还活着,则在 auth gurd 函数中销毁所有组件

问题描述

Angular onDestroy 检测到问题

如您所知,在以下情况下未检测到破坏事件

检查以下情况的方法实际上 Token 是活着的

所以我尝试在上述操作之后检查现有令牌。我从 ActivatedRoute 中捕获了 AppComponet 类实例。Token 被快速保存到 LocalStorage 中,因此可以使用 Token 获取管理数据。并返回当前页面,但 Angular 创建了新的组件。我应该在返回当前页面之前销毁所有组件,但我不确定该怎么做。如果你知道,请告诉我方法。

  async canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Promise<boolean> {

      // token check
      let result = this.authFactiry.CheckToken();
      if (result) {

        // get manage data for user
        result = await this.authFactiry.GetData();
      }

      if (result) { 
        this.destoryComponents(); // <- I would like to know this detail
        return result;
      }

      const comp = this.route.Component; // this is AppComponent

      // if check error navigate to login page
      this.router.navigate(['login']);
      return result;
  }

标签: angulartypescript

解决方案


推荐阅读