Angular: включить выборочную прокрутку маршрутизатора?

#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 очевидно, что это не селектор. Я написал это в своем посте. Но это использую не я, а фреймворк