Я хочу передать текущий URL из файла app.routing.ts в guard , потому что существует проблема, по которой URL-адрес сбрасывается в Guard по какой-то причине. Ниже я добавил, как я передаю данные в маршрут.
const appRoutes: Routes = [
{
path: '',
loadChildren: './plain-page.module#PlainPageModule',
canActivate: [TravelplanTokenGuard],
data: {'url': new URL(window.location.href)}
},
Теперь мой вопрос: как я могу получить эти данные URL в моей охране с angular 7.3? Я пробовал несколько решений, таких как ActiveRoute решения ниже
canActivate() {
this.route.data.subscribe(data => {
console.log(data);
});
}
или
const url = this.route.snapshot.data['url']
, но оба они, к сожалению, не работают для меня
РЕДАКТИРОВАТЬ: я пытаюсь получить эти данные в функции canActivate моего пользовательского guard
EDIT 2.0: я пробовал решение ниже, но журнал в .then () даже не запускается, прежде чем приложение перенаправляет на root маршрут
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;
});
}