Angular路由器.navigate在canActivate()中不适用于子路由
创始人
2024-10-28 02:32:57
0次

这是因为当使用navigate方法时,路由守卫会阻止导航到未激活的子路由。为了解决这个问题,我们需要使用路由器的navigateByUrl方法来导航到子路由。

以下是示例代码:

import { Router, ActivatedRoute } from '@angular/router';
import { Injectable } from '@angular/core';
import { CanActivate } from '@angular/router';

@Injectable()
export class AuthGuard implements CanActivate {

  constructor(private router: Router, private route: ActivatedRoute) {}

  canActivate() {
    if (isAuthenticated()) {
      return true;
    } else {
      // Navigate to login page with the current URL as a query string parameter
      this.router.navigateByUrl('/login?returnUrl=' + this.route.snapshot.url.join('/'));
      return false;
    }
  }
}

在这个示例中,我们使用了navigateByUrl方法来导航到/login子路由,同时将当前URL作为查询字符串参数一起传递。这样,用户在成功登录后将返回之前的URL。

我们需要确保在定义路由时将子路由的定义放在父路由的后面,以确保子路由成功地激活。例如:

const appRoutes: Routes = [
  { path: '', component: HomeComponent },
  { path: 'login', component: LoginComponent },
  { path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuard], children: [
    { path: 'profile', component: ProfileComponent }
  ]},
  { path: '**', component: PageNotFoundComponent }
];

@NgModule({
  imports: [
    RouterModule.forRoot(appRoutes)
  ]
})
export class AppRoutingModule { }

在这个例子中,子路由/profile是由父路由/dashboard激活的。

相关内容

热门资讯

必备辅助推荐!多乐升级开挂功能... 必备辅助推荐!多乐升级开挂功能app,多乐升级果然是真的有开挂app(有辅助挂app)1、点击下载安...
信息共享!熊猫麻将透视挂功能插... 信息共享!熊猫麻将透视挂功能插件,熊猫麻将其实是真的有透视挂插件(有辅助挂功能)1、下载好熊猫麻将脚...
实测揭晓!百信棋牌透视功能教程... 实测揭晓!百信棋牌透视功能教程,百信棋牌本来真的是有透视教程(有辅助挂助手)1)百信棋牌免费钻石:进...
终于知道!云海游戏辅助器功能技... 终于知道!云海游戏辅助器功能技巧,云海游戏总是是真的有辅助器技巧(有辅助挂技术)1、游戏颠覆性的策略...
盘点一款!陕西麻将辅助功能软件... 盘点一款!陕西麻将辅助功能软件,陕西麻将果然有辅助软件(有辅助挂秘诀)1、进入游戏-大厅左侧-新手福...
普及知识!众乐联盟辅助器功能a... 普及知识!众乐联盟辅助器功能app,众乐联盟总是是真的有辅助器app(有辅助挂分析)1)众乐联盟有没...
玩家交流!手心电玩辅助器功能技... 您好,手心电玩这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家在这款...
必备教程!魅力开挂功能教程,魅... 必备教程!魅力开挂功能教程,魅力其实存在有开挂教程(真实有辅助挂)1、首先打开魅力辅助器下载最新版本...
每日必看!中至吉安麻将透视功能... 每日必看!中至吉安麻将透视功能软件,中至吉安麻将总是是有透视软件(有辅助挂秘诀)1、完成中至吉安麻将...
一分钟带你了解!52斗地主辅助... 一分钟带你了解!52斗地主辅助器功能技巧,52斗地主确实是有辅助器技巧(有辅助挂解密)一、52斗地主...