gpt4 book ai didi

javascript - Angular 2 RouterStateSnapshot 未返回正确的 url

转载 作者:行者123 更新时间:2023-12-03 04:14:27 26 4
gpt4 key购买 nike

我试图根据 Angular 的文档在登录后获取重定向。 https://angular.io/docs/ts/latest/guide/router.html#!#teach-authguard-to-authenticate

尽管有些文件名不同,但我的设置基本相同。

问题是当我在 authGuard 中记录 RouterStateSnapshot url 时,它总是会输出来自 app-routing.module.ts ('/countries') 的第一条路线,而不是例如/国家/法国/34

authGuard

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
let url = state.url;
console.log(state); // always outputs first route from app-routing.module.ts ('/countries')
return this.checkLogin(url);
}

checkLogin(url: string): boolean {
if (this.userService.isLoggedIn()) {
return true;
}
this.userService.redirectUrl = url;
console.log(this.userService.redirectUrl);

// not logged in so redirect to login page
this.router.navigate(['/login']);
return false;
}

应用路由模块

const routes: Routes = [
{ path: '', redirectTo: 'countries', pathMatch: 'full', canActivate: [AuthGuard]},
{ path: 'login', loadChildren: './authentication/authentication.module#AuthenticationModule' },
{ path: 'countries', loadChildren: './countries/countries.module#CountriesModule'},
...
];

国家路由模块

const routes: Routes = [
{ path: '', component: CountriesComponent, canActivate: [AuthGuard] },
{ path: ':name/:id', component: CountryComponent, canActivate: [AuthGuard] }
];

希望有人能帮忙

最佳答案

您对所有路径使用相同的AuthGuard,因此您会看到该结果,您可以为不同的路由创建不同的身份验证防护,或者使用一些逻辑来识别相同的canActivate 被调用。

希望这有帮助!!

关于javascript - Angular 2 RouterStateSnapshot 未返回正确的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44201794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com