首页 > 解决方案 > URL 路径的某些部分被删除并在浏览器历史记录中进行双重导航

问题描述

我正在使用角度的navigate功能Router。这导致导航一次,但在历史记录中创建两个导航,并且 URL 会自动更新,其中 URL 的某些部分被剥离,如下所述:

this.router.navigate(['buses','big','bus-details'],queryParamas:{busId:'abc'});然后在第一次导航中,localhost:4200/buses/big/bus-details?busId=abcurl 将被更新,但即使在一秒钟内,url 也会被更新localhost:4200/buses/big/bus-details,当我点击浏览器的后退按钮时,我会被带到 url,localhost:4200/buses/big/bus-details?busId=abc尽管该ngOnInit()函数在从第一次更新移动到第二次更新时只调用一次网址。

我一直都是这样导航,但从来没有出现过问题。我什至检查过该NavigationStart事件只触发一次。

我正在寻找的是不应该发生这种 URL 更新,我能做些什么来防止在导航时更新 URL?

更新:我观察到此错误仅在通过特定功能模块路由时发生,但如果我从根路由到模块,AppModule则不会发生此 URL 更新,也不会创建两个导航,即我不需要单击后退按钮两次去我调用导航功能的路径/组件。因此,这似乎是正在完成导航的功能模块中的错误,而不是我正在导航的组件中的错误。

标签: angular

解决方案


在我添加到我的问题的更新之后,我能够解决我的问题,尽管我无法找出发生这种情况的根本原因。以前,当我遇到问题时,我是从在 Feature 模块中声明的组件中收到navigate的对象调用函数Router,我还观察到此导航错误仅来自功能模块组件,而不是来自 AppModule 中定义的组件,因此有服务中定义的AppModule,我首先将该服务注入到功能模块组件中,然后使用该Router服务的对象调用如下所示的导航功能,一切运行顺利。

this.globalService.router.navigate(path);

推荐阅读