想要由用户使用Angular 6重新添加删除的参数

时间:2019-06-18 10:37:40

标签: javascript angular typescript

如果用户手动从url中删除了参数。我想使用Angular 6在URL中添加参数的值。假设,

https://localhost:4200/root/param1/product

此处用户正在从网址中删除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正常工作,我面临着这个问题。 请帮我看看用户是否手动从网址中删除了参数,如何找到它为null以及如何增加真实值。

1 个答案:

答案 0 :(得分:0)

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

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

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