角:启用路由器选择性滚动?

时间:2019-03-04 13:16:57

标签: angular

我正在使用Keycloak / OAuth2,后者通过URI重定向中的哈希片段发送JWT令牌。在Angular中,使用锚定路由器滚动时会出现问题。从外部登录页面重定向回Angular时,出现错误:

@foreach($doc_data as $data)
      {{ $data['id'] }}
@endforeach

像这样删除防护中的令牌并不能解决问题,因为登录过程将中止:

state=LONG.JWT.TOKEN is not a valid selector
at BrowserViewportScroller.push.../../node_modules/@angular/common/fesm5/common.js
.BrowserViewportScroller.scrollToAnchor 

那么,有什么方法可以使路由器仅在某些模块/组件中而不是其他模块/组件中选择性地执行滚动,例如,使其不认为state =是querySelector?我的routerconfig(这仅适用于AppModule中的forRoot,不适用于惰性子模块;它们仅接受一个参数,例如路由),如下所示:

@Injectable()
export class StateFromUrlRemovalGuard implements CanActivate {
  constructor(private router: Router) { }

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    if (route.fragment && route.fragment.startsWith('state=')) {
        this.router.navigate(state);
    }
    return true;
  }
}

0 个答案:

没有答案