我正在编写我的angular 5+应用程序,并使用for (x=1; x < document.getElementsByClassName('div').length; x++) {
$('#div' + x).load('#table' + x);
}
进行的操作是从另一个AuthGuardService
应用程序重定向,该应用程序向我发送查询字符串中的表单数据
php
http://localhost:44200/#/users/save?first_name=John&last_name=Doe
如果用户未使用以下代码登录,则将其正确重定向至登录
AuthGuardService
但是登录后,如果没有查询字符串,我可以重定向返回url,我想将用户与所有查询字符串重定向到同一页面。
请指导我如何处理。
答案 0 :(得分:2)
这就是我的方法。在您的AuthGuard#canActivate中添加以下内容:
@Injectable()
export class AuthGuard implements CanActivate{
originRoute:ActivatedRouteSnapshot;
constructor(private authentificationService: AuthChecker,
private router: Router){}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
if(localStorage.getItem('crmUser')){
return true;
}
this.originRoute = route;
this.router.navigate(['/login'], { queryParams: {returnUrl: state.url},queryParamsHandling: 'merge' });
return false;
}
}
public hasOriginRoute(): boolean{
return this.originRoute != null;
}
}
成功登录后,现在在您的LoginComponent中添加:
if(this.authGuard.hasOriginRoute()){
this.router.navigate(this.authGuard.originRoute.url.map((x) => x.path));
}