Angular 已完成重定向后未重定向的防护

Angular 已完成重定向后未重定向的防护,angular,ngrx-store,ngrx-router-store,Angular,Ngrx Store,Ngrx Router Store,我遇到了一些关于警卫路线的奇怪问题。 情况如下: 页面A上有一个防护装置,防护装置检查它是否拥有访问该页面的所有内容。如果没有,它将重定向到B页,以获取它需要的所有信息,例如选择一个客户端。 当该用户在没有正确信息的情况下导航回A页时,它会被重定向回B页。 这就是一切都出错的地方,因为不允许用户进入页面A,我从警卫那里返回一个false并进行重定向。 但我的商店说路线是A页,但因为我拒绝导航,我仍然在B页 这种情况在代码中类似于以下内容: 防护装置 canActivate(route: Acti

我遇到了一些关于警卫路线的奇怪问题。 情况如下: 页面A上有一个防护装置,防护装置检查它是否拥有访问该页面的所有内容。如果没有,它将重定向到B页,以获取它需要的所有信息,例如选择一个客户端。 当该用户在没有正确信息的情况下导航回A页时,它会被重定向回B页。 这就是一切都出错的地方,因为不允许用户进入页面A,我从警卫那里返回一个false并进行重定向。 但我的商店说路线是A页,但因为我拒绝导航,我仍然在B页

这种情况在代码中类似于以下内容:

防护装置

canActivate(route: ActivatedRouteSnapshot,
              state: RouterStateSnapshot): boolean {

    if (got_what_i_need) {
      return true;
    } else {

        this.store.dispatch(new RouterActions.Go({
          path: ['pageB']




    }
    return false;

  }
路线

const appRoutes: Routes = [
  { path: RoutePaths.pageA, loadChildren: './pageA', canActivate: [PortalDetectionGuard] },
  { path: RoutePaths.PageB, loadChildren: './pageB'},
有人知道我做错了什么吗? 此外,每当我返回false时,当前页面也不会被破坏或重新初始化


提前谢谢

尝试使用另一种导航策略:

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    if (got_what_i_need) {
      return true;
    } else {
      this.router.navigate(['page-B'])
    }
    return false;
}
为此,您需要在警卫的构造函数中插入路由器

  constructor(private navigationService: NavigationService)

如果这不起作用,可能是“得到我所需要的”部分造成的

我已经尝试直接使用router.navigate,但效果相同。