首页 > 解决方案 > 想要使用 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 以及如何添加回实际值。

标签: javascriptangulartypescript

解决方案


好吧,就像你说的,如果你删除参数然后页面重定向,那么原因一定是你在路由模块中定义了这样的路由。喜欢:

{path: '/root/:anotherParam', redirectTo: '/login', pathMatch: 'full'}
{path: '/root/:opportunity/:anotherParam', Component: ComponentB}

当第二个路由因为没有参数机会而无法匹配时,第一个路由匹配,然后它会将您重定向到登录路由。就像您说的,如果您提供错误的参数值,它会起作用,因为它与第二条路线匹配(有错误的机会)。出于重定向目的,您应该重新考虑您的路线。您也可以使用 localstorage 或 sessionStroage(最好)来存储用户参数,然后检查路由中的参数,如果没有这样的参数,则可以从 local/sessionStorage 中获取。希望它可以帮助你。


推荐阅读