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

相关内容

热门资讯

8分钟辅助挂!aapoker俱... WePoker透视辅助工具核心要点解析‌,8分钟辅助挂!aapoker俱乐部,wepower可以设置...
十分钟透明!闲逸碰胡亲友圈怎么... 十分钟透明!闲逸碰胡亲友圈怎么那好牌,微扑克辅助器下载(详细透视辅助脚本教程)是一款可以让一直输的玩...
八分钟黑科技!赣牌圈怎么提高胜... 八分钟黑科技!赣牌圈怎么提高胜率,We辅poker助(详细透视辅助器教程),支持语音通讯、好友开房及...
3分钟技巧!天天卡五星辅助器,... 3分钟技巧!天天卡五星辅助器,wepoke软件透明下载渠道(详细透视辅助助手教程)相信很多朋友都在电...
3分钟方法!陕西奇迹麻将有没有... 3分钟方法!陕西奇迹麻将有没有秘籍,云扑克德州辅助器免费(详细透视辅助助手教程)1、让任何用户在无需...
4分钟技巧!财神十三张小程序怎... 4分钟技巧!财神十三张小程序怎样辅助,红龙poker正规(详细透视辅助器教程)是一款可以让一直输的玩...
三分钟攻略!雀神麻将有挂没,微... 1、三分钟攻略!雀神麻将有挂没,微扑克ai操作(详细透视辅助app教程)。2、雀神麻将有挂没透视辅助...
1分钟技巧!中至麻将挂在哪里,... 1分钟技巧!中至麻将挂在哪里,微扑克专用辅助器(详细透视辅助软件教程);亲,其实确实真的有挂(需添加...
七分钟辅助挂!快玩炸翻天旧版辅... 七分钟辅助挂!快玩炸翻天旧版辅助工具,wpk可以下载ios(详细透视辅助挂教程)1、这是跨平台的快玩...
六分钟规律!星悦麻将是不是有挂... 六分钟规律!星悦麻将是不是有挂,wpk德州透视辅助(详细透视辅助挂教程);星悦麻将是不是有挂黑科技是...