导航到另一条路线后,Can Angccate可以继续吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了导航到另一条路线后,Can Angccate可以继续吗?相关的知识,希望对你有一定的参考价值。

在身份验证失败时,我希望显示Facebook登录。不知道是否可以在router.navigate(['login'])中执行canActivate来触发身份验证并返回登录的异步结果,或者它会被router.navigate调用中断。想想这里适当而简单的流程。

答案

对的,这是可能的。你也可以使用navigateByUrl来访问facebook

import { Injectable } from '@angular/core';
import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { UserService } from './user.service';

@Injectable()
export class AuthGuardService implements CanActivate {

  constructor(private userService: UserService, private router: Router) {}

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    if (this.userService.isValid()) {
      return true;
    } else {
      this.router.navigate(['/login'], {
        queryParams: {
          return: state.url
        }
      });
      return false;
    }
  }
}

代码片段转到/更多示例可以在:http://gnomeontherun.com/2017/03/02/guards-and-login-redirects-in-angular/上找到

以上是关于导航到另一条路线后,Can Angccate可以继续吗?的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2 - 如何使用 this.router.parent.navigate('/about') 导航到另一条路线?

如何以角度将数据从一条路线传输到另一条路线? [复制]

在我的 laravel 4 和 angularjs 应用程序中从一条路线重定向到另一条路线

如何将状态从一个反应路线传递到另一个反应路线?

将信息从一条路线传递到另一条路线:Flask ignoring redirect requests

从 TabBarView Child 导航到另一个 Route(全屏)