Я пытаюсь использовать элемент из ngrx / store в моей authguardService.Когда маршрутизация доходит до точки, где она проверяет canActivate, она работает правильно, но когда элемент изменяется, защитник маршрута не меняет свой вывод, и функция canActivate все равно возвращается, даже если она должна вернуть false.
Код для функции canActivate:
canActivate(): Observable<boolean> | Promise<boolean> | boolean {
return this.store.pipe(
select('account'),
map((account) => {
console.log('account', account);
if (account.agb === true) {
return true;
} else {
this.router.navigate(['/agb']);
return false;
}
}),
take(1)
);
}
Маршрутизация:
{
path: '',
canActivate: [BesucherGuardService],
children: [
{
path: 'offers',
component: BesucherTestComponent
}
]
},
{
path: '',
canActivate: [AuthGuardService, AgbGuardService, LernenderGuardService],
children: [
{
path: 'offers',
component: LernenderTestComponent
}
]
},
Как видно из приведенного выше кода, маршрут / предложения определены два раза, один для вас, когда выBesucher и один, когда вы Lernender. К сожалению, даже после того, как account.role изменился на LERNENDER в магазине, он все еще соответствует маршруту, потому что BesucherGuardService, похоже, не знает об изменении переменной account.role.
Как я могу это исправить?