Angular路由守卫在订阅中未解析
创始人
2024-10-28 04:30:29
0

问题描述:当使用路由守卫来防止未授权的访问时,我们经常遇到在订阅内部无法解决的问题。这可能是由于订阅在路由守卫之前解析,因此路由守卫无法获取所需的数据。

解决方案:为了解决此问题,我们可以从rxjs中引入switchMap操作符,并使用它来返回可观察对象。这将确保我们的路由守卫能够解析所需的数据。

示例代码:

import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';
import { AuthService } from '../services/auth.service';
import { switchMap } from 'rxjs/operators';

@Injectable()
export class AuthGuard implements CanActivate {

  constructor(private authService: AuthService, private router: Router) {}

  canActivate() {
    return this.authService.isAuthenticated().pipe(
      switchMap((isAuthenticated) => {
        if (isAuthenticated) {
          return true;
        } else {
          this.router.navigateByUrl('/login');
          return false;
        }
      })
    );
  }

}

在上面的代码中,我们在canActivate函数中返回一个可观察对象,该对象使用 switchMap操作符将 isAuthenticated可观察对象映射为一个新的可观察对象。这样,我们的路由守卫就可以在完全解决订阅后使用 isAuthenticated的值来决定是否通过路由守卫进行认证。

相关内容

热门资讯

一分钟了解!新二号辅助软件下载... 一分钟了解!新二号辅助软件下载,海贝之城辅助软件下载,黑科技教程(真是有挂);一分钟了解!新二号辅助...
实测发现!微乐家乡官方app下... 《实测发现!微乐家乡官方app下载,乐酷大厅可以安装,透明教程(有挂头条)》 微乐家乡官方app下载...
一分钟揭秘!新超圣辅助靠谱不,... 一分钟揭秘!新超圣辅助靠谱不,天酷游戏交易平台,德州论坛(有挂工具);新超圣辅助靠谱不最新软件透明挂...
普及知识!微信小程序自动透视微... 普及知识!微信小程序自动透视微乐,上品游戏辅助器,详细教程(果真有挂);普及知识!微信小程序自动透视...
实测发现!皇豪辅助,新祥心挂机... 实测发现!皇豪辅助,新祥心挂机,wpk教程(有挂方略);大家肯定在之前新祥心挂机或者新祥心挂机中玩过...
热门推荐!微信小程序功夫川麻小... 热门推荐!微信小程序功夫川麻小程序辅助,hhpoker这个软件靠谱,黑科技教程(有挂辅助);1、点击...
记者爆料!小程序辅助器免费,川... 记者爆料!小程序辅助器免费,川南休闲辅助,必赢教程(有挂方法);小程序辅助器免费最新软件透明挂直接下...
实测发现!新荣耀房卡辅助,约局... 实测发现!新荣耀房卡辅助,约局吧破解器,透明挂教程(竟然有挂);新荣耀房卡辅助中的10万兆豆可能无法...
玩家必看科普!水鱼辅助软件下载... 玩家必看科普!水鱼辅助软件下载,新超凡辅助器,细节揭秘(有挂方式);是一款可以让一直输的玩家,快速成...
科技新动态!蛮王辅助,新全游辅... 您好,新全游辅助器这款游戏可以开挂的,确实是有挂的,需要了解加微【485275054】很多玩家在这款...