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激活的。

相关内容

热门资讯

一分钟快速了解!狂飙娱乐辅助功... 一分钟快速了解!狂飙娱乐辅助功能方法,狂飙娱乐本来存在有辅助方法1)狂飙娱乐免费钻石:进一步探索狂飙...
记者发布!王者棋牌辅助器功能技... 记者发布!王者棋牌辅助器功能技巧,王者棋牌一直真的是有辅助器技巧1、进入到王者棋牌是否有挂之后,能看...
重大发现!绿洲娱乐透视功能教程... 重大发现!绿洲娱乐透视功能教程,绿洲娱乐确实是真的有透视教程一、绿洲娱乐可以开透视的定义与意义1、绿...
玩家科普!聚乐透视挂功能教程,... 玩家科普!聚乐透视挂功能教程,聚乐一直真的有透视挂教程聚乐能透视中分为三种模型:聚乐模拟器、聚乐私人...
玩家交流!边锋斗地主辅助功能神... 玩家交流!边锋斗地主辅助功能神器,边锋斗地主其实有辅助神器1、许多玩家不知道边锋斗地主辅助怎么退出观...
每日必看!红豆大厅辅助功能插件... 每日必看!红豆大厅辅助功能插件,红豆大厅一直真的有辅助插件1、在红豆大厅插件功能辅助器技巧中,中转单...
普及知识!艺龙游戏辅助功能攻略... 普及知识!艺龙游戏辅助功能攻略,艺龙游戏总是真的是有辅助攻略1、不需要AI权限,帮助你快速的进行艺龙...
实测揭晓!爱上斗牌开挂功能软件... 实测揭晓!爱上斗牌开挂功能软件,爱上斗牌果然真的是有开挂软件1、这是跨平台的爱上斗牌轻量版有透视,在...
免费测试版!边锋老友宁安麻将辅... 免费测试版!边锋老友宁安麻将辅助器功能app,边锋老友宁安麻将一贯存在有辅助器app1、起透看视 边...
避坑细节!白金岛湘潭三打哈辅助... 避坑细节!白金岛湘潭三打哈辅助器功能神器,白金岛湘潭三打哈确实存在有辅助器神器1、首先打开白金岛湘潭...