javascript - 想要使用 Angular 6 重新添加用户删除的参数
问题描述
如果用户手动从 url 中删除参数。我想使用 Angular 6 在 url 中添加参数的值。假设,
https://localhost:4200/root/param1/product
这里用户正在从 url 中删除 param1,
所以,现在的网址会是这样的,
https://localhost:4200/root//product
它正在重定向到登录页面。但我不想要这种重定向。
我在这里使用解决方案。
resolve(route: ActivatedRouteSnapshot) {
const param1 = route.paramMap.get('opportunity');
if (param1 === null) {
this.cart.createOpportunityId().subscribe((opp) => {
this.router.navigate(['/root', opp, route.url[3].path]);
});
}
}
这里我写了一个条件来判断参数是否为空。但是当我尝试手动删除 param1 时。页面正在重定向。当参数值为 null 并且参数值错误时,我面临这个问题,url 工作正常。请帮我看看用户是否手动从 url 中删除了参数,如何找到它为 null 以及如何添加回实际值。
解决方案
好吧,就像你说的,如果你删除参数然后页面重定向,那么原因一定是你在路由模块中定义了这样的路由。喜欢:
{path: '/root/:anotherParam', redirectTo: '/login', pathMatch: 'full'}
{path: '/root/:opportunity/:anotherParam', Component: ComponentB}
当第二个路由因为没有参数机会而无法匹配时,第一个路由匹配,然后它会将您重定向到登录路由。就像您说的,如果您提供错误的参数值,它会起作用,因为它与第二条路线匹配(有错误的机会)。出于重定向目的,您应该重新考虑您的路线。您也可以使用 localstorage 或 sessionStroage(最好)来存储用户参数,然后检查路由中的参数,如果没有这样的参数,则可以从 local/sessionStorage 中获取。希望它可以帮助你。