Angular 2 authguard 相对重定向

标签 angular angular2-routing

有没有办法在 authguard 中使用相对路径模式进行重定向?

我试过

@Injectable()
export class ServerAuthGuard implements CanActivate {
    constructor(private _router: Router,
                private _route: ActivatedRoute) {
    }

    canActivate(route: ActivatedRouteSnapshot): boolean {
        this._router.navigate(['../../servers/'], {relativeTo: this._route});

        return false;
    }
}

它应该从 /projects/2/servers/71 重定向到 /projects/2/servers/ 但它总是将它重定向到 /servers(当我在一个组件中做同样的事情时它工作正常)。

最佳答案

relativeTo 也应该接受一个 ActivatedRouteSnapshot,看起来这可能被忽略了,同时这里有一个解决方法:

  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
      // if(...) {
        const segments = state.url.split('/');
        segments.pop();
        segments.shift();
        this.router.navigate(segments);
      // } else {
      //   return true;
      // }


}

关于Angular 2 authguard 相对重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42200849/

相关文章:

Angular router.navigate() 增量

Angular 电子邮件验证模式严格执行该模式

angular - 如何禁用使用 Angular 2 项目开发的应用程序的 F5 或刷新按钮

asp.net - Angular 2 无法使用 asp.net MVC 5 Web Api 调用自定义 Web Api

没有在每个路由请求上调用 Angular 4 Component ngOnInit

angular - Angular 2 中的惰性引用路由在哪里?

angular - ng2-chart 没有按预期显示,甚至控制台没有显示任何错误

angular - 如何使用管道突出显示 Angular6 中搜索到的文本?

angular - 从 Angular 2 上的查询参数中预填充输入文本框

javascript - 如何防止 Angular 2中的状态加载