Angular 2 router queryParams 未添加到 url
Angular 2 router queryParams are not added into url
我有一个 auth guard,它可以保护我的网络应用程序的某些页面。在重定向期间,我想将 queryParams 添加到我的 url 以允许用户返回到他想要通过的站点。下面的代码工作了一段时间。今天我意识到 url
中不存在 queryParms
async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
let isLogged: boolean = this.loggedInCustomer.isLoggedIn();
if (!isLogged) {
console.log(state.url);
this.router.navigateByUrl(this.env.getLoginUrl(), { queryParams: {returnUrl: state.url}});
return false;
}
return true;
}
我已经检查 state.url 它是正确的。所以问题可能出在创建路由器 url.
我临时解决了
this.router.navigateByUrl(`${this.env.getLoginUrl()}?returnUrl=${state.url}`);
这里有一个 link 类似的问题
Setting router queryParams in angular 2 do not work
但我知道这样不好。你能向我解释一下这个查询我做错了什么吗?为什么它停止工作?问候!
NavigateByUrl
始终是绝对值 Angular Doc's。相反,您可以使用 navigate
:
let navigationExtras: NavigationExtras = {
queryParams: { 'returnUrl': state.url },
fragment: 'anchor'
};
this.router.navigate([this.env.getLoginUrl()], navigationExtras);
我有一个 auth guard,它可以保护我的网络应用程序的某些页面。在重定向期间,我想将 queryParams 添加到我的 url 以允许用户返回到他想要通过的站点。下面的代码工作了一段时间。今天我意识到 url
中不存在 queryParmsasync canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
let isLogged: boolean = this.loggedInCustomer.isLoggedIn();
if (!isLogged) {
console.log(state.url);
this.router.navigateByUrl(this.env.getLoginUrl(), { queryParams: {returnUrl: state.url}});
return false;
}
return true;
}
我已经检查 state.url 它是正确的。所以问题可能出在创建路由器 url.
我临时解决了
this.router.navigateByUrl(`${this.env.getLoginUrl()}?returnUrl=${state.url}`);
这里有一个 link 类似的问题 Setting router queryParams in angular 2 do not work
但我知道这样不好。你能向我解释一下这个查询我做错了什么吗?为什么它停止工作?问候!
NavigateByUrl
始终是绝对值 Angular Doc's。相反,您可以使用 navigate
:
let navigationExtras: NavigationExtras = {
queryParams: { 'returnUrl': state.url },
fragment: 'anchor'
};
this.router.navigate([this.env.getLoginUrl()], navigationExtras);