导航到另一条路线后,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 应用程序中从一条路线重定向到另一条路线