如果用户手动从url中删除该参数。我想使用Angular 6在url中添加回参数的值。
https://localhost:4200/root/param1/product
这里用户正在从url中删除param1,
因此,现在的url将是这样的,
https://localhost:4200/root//product
并且它正在重定向到登录页面。但我不想要那个重定向。
我在这里使用resolve。
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时。页面正在重定向。当参数值为空,当参数值错误时,我就会遇到这个问题,url就能正常工作。请帮我找出,如果用户手动删除网址中的参数,如何找到它是空的,以及如何添加回实际值。
发布于 2019-06-18 20:46:27
嗯,就像你说的,如果你删除param然后页面重定向,那么原因一定是你已经在你的路由模块中定义了这样的路由。像这样:
{path: '/root/:anotherParam', redirectTo: '/login', pathMatch: 'full'}
{path: '/root/:opportunity/:anotherParam', Component: ComponentB}当第二个路由由于没有参数机会而无法匹配时,第一个路由匹配,然后它会将您重定向到登录路由。就像你说的,如果你提供了错误的参数值,它会起作用,因为它与第二个路由匹配(有错误的机会)。为了重定向的目的,你应该重新考虑你的路线。您还可以使用localstorage或sessionStroage(最好是)来存储用户参数,然后检查路由中的参数,如果没有这样的参数,则可以从本地/会话存储中获取。希望能对你有所帮助。
https://stackoverflow.com/questions/56647229
复制相似问题