我对角度路线有疑问。在我的应用程序中,我有一个登录会话到期时间。因此,当用户在15分钟内不活跃时-该应用将要求他再次登录。
这时,我将当前的活动URL保存在商店中,并希望在登录后将用户重定向到该URL。我正在使用this.router.navigate([backUrl])
来做到这一点。
问题是某些带有括号的路由,例如将此http://localhost:4200/somedata/details/3043/edit/(modal:activity/6b9f7a3e-93c9-418f-a172-c2fa648d1be7)
转换为http://localhost:4200/somedata/details/3043/edit/%28modal:activity/6b9f7a3e-93c9-418f-a172-c2fa648d1be7%29
,并且在此页面中路由无法识别。
我尝试使用CustomUrlSerializer
来解决此问题:
export class CustomUrlSerializer implements UrlSerializer {
private defaultUrlSerializer: DefaultUrlSerializer = new DefaultUrlSerializer();
parse(url: string): UrlTree {
// Encode parentheses
url = url.replace(/\(/g, '%28').replace(/\)/g, '%29');
// Use the default serializer.
return this.defaultUrlSerializer.parse(url);
}
serialize(tree: UrlTree): string {
return this.defaultUrlSerializer.serialize(tree).replace(/%28/g, '(').replace(/%29/g, ')');
}
}
并添加到App.module提供者{ provide: RouterStateSerializer, useClass: CustomRouterStateSerializer },
但是,如果我尝试在新的浏览器窗口中打开它们,或者只是刷新页面,则总是将我重定向到带有括号的URL的NotFound页面。但它仍然适用于相对路线。像从该网址http://localhost:4200/somedata/details/3043/edit
一样,我可以通过路径(modal:activity/6b9f7a3e-93c9-418f-a172-c2fa648d1be7)