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、不需要AI权限,帮助...
总结辅助挂!小闲川南手游辅助器... 总结辅助挂!小闲川南手游辅助器!好像真的是有开挂辅助教程(有挂规律)-哔哩哔哩1、下载好小闲川南手游...
据权威媒体报道!决战平安京辅助... 您好,决战平安京辅助软件这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多...
据了解!方片十三张辅助器软件!... 据了解!方片十三张辅助器软件!切实真的是有开挂辅助挂(有挂细节)-哔哩哔哩1、任何方片十三张辅助器软...
第三方技巧!小旋风辅助器!其实... 第三方技巧!小旋风辅助器!其实确实有开挂辅助脚本(果真有挂)-哔哩哔哩1、小旋风辅助器免费辅助多个强...
近年来!中至余干麻将有没有挂!... 近年来!中至余干麻将有没有挂!真是真的有开挂辅助方法(有挂总结)-哔哩哔哩1、金币登录送、破产送、升...
黑科技辅助挂!茶馆儿破解教程!... 黑科技辅助挂!茶馆儿破解教程!本来是有开挂辅助方法(有挂功能)-哔哩哔哩一、茶馆儿破解教程可以开透视...
明白辅助挂!欢乐茶馆怎么能赢!... 明白辅助挂!欢乐茶馆怎么能赢!真是是有开挂辅助脚本(有挂透明挂)-哔哩哔哩1)欢乐茶馆怎么能赢辅助插...