【发布时间】:2020-04-25 22:43:37
【问题描述】:
我想将 app.routing.ts 文件中的当前 URL 传递给 guard,因为由于某种原因导致 url 在防护中重置存在问题。下面我添加了如何将数据传递给路由。
const appRoutes: Routes = [
{
path: '',
loadChildren: './plain-page.module#PlainPageModule',
canActivate: [TravelplanTokenGuard],
data: {'url': new URL(window.location.href)}
},
现在我的问题是:如何使用 Angular 7.3 在我的守卫中获取此 URL 数据?我尝试了多种解决方案,例如下面的 ActiveRoute 解决方案
canActivate() {
this.route.data.subscribe(data => {
console.log(data);
});
}
或
const url = this.route.snapshot.data['url']
但遗憾的是,两者似乎都不适合我
编辑:我正在尝试在自定义 guard
的 canActivate 函数 中获取这些数据编辑 2.0:我尝试了下面的解决方案,但是在应用重定向到根路由之前,.then() 中的日志甚至没有被触发
canActivate() {
return new Promise((resolve) => {
this.router.events.subscribe(event => {
console.log(event)
if (event instanceof NavigationEnd) {
this.url = this.route.root.firstChild.snapshot.data['url'];
resolve();
}
});
}).then(() => {
console.log('in de tokenguard', this.token)
if (!this.jwtHelper.isTokenExpired(this.token)) {
return true;
}
return false;
});
}
【问题讨论】:
标签: angular angular7 angular-routing angular7-router angular-guards