#angular
#angular
Вопрос:
Я работаю с Keycloak / OAuth2, который отправляет токен JWT через хэш-фрагмент в перенаправлении URI. В Angular это проблематично при работе с привязкой-прокруткой маршрутизатора. При перенаправлении с внешней страницы входа обратно на Angular я получаю сообщение об ошибке:
state=LONG.JWT.TOKEN is not a valid selector
at BrowserViewportScroller.push.../../node_modules/@angular/common/fesm5/common.js
.BrowserViewportScroller.scrollToAnchor
удаление токена внутри подобной защиты не решает проблему, потому что тогда процесс входа в систему прерывается:
@Injectable()
export class StateFromUrlRemovalGuard implements CanActivate {
constructor(private router: Router) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
if (route.fragment amp;amp; route.fragment.startsWith('state=')) {
this.router.navigate(state);
}
return true;
}
}
Итак, есть ли какой-нибудь способ заставить маршрутизатор выполнять прокрутку только выборочно в некоторых модулях / компонентах, а не в других, например, чтобы он не думал, что state = — это querySelector? Мой routerconfig (который возможен только для root в AppModule, а не в ленивых дочерних модулях; они принимают только один аргумент, например, маршруты) выглядит следующим образом:
onSameUrlNavigation: 'reload',
scrollPositionRestoration: 'enabled',
anchorScrolling: 'enabled',
scrollOffset: [0, 50]
Комментарии:
1. Я думаю, что вы используете функцию scrollTo и используете «state=LONG.JWT.TOKEN» в качестве селектора, который не выглядит как допустимый селектор, пожалуйста, попробуйте отладить эту вещь.
2. @ArpitMeena очевидно, что это не селектор. Я написал это в своем посте. Но это использую не я, а фреймворк