angular - URL 路径的某些部分被删除并在浏览器历史记录中进行双重导航
问题描述
我正在使用角度的navigate
功能Router
。这导致导航一次,但在历史记录中创建两个导航,并且 URL 会自动更新,其中 URL 的某些部分被剥离,如下所述:
this.router.navigate(['buses','big','bus-details'],queryParamas:{busId:'abc'});
然后在第一次导航中,localhost:4200/buses/big/bus-details?busId=abc
url 将被更新,但即使在一秒钟内,url 也会被更新localhost:4200/buses/big/bus-details
,当我点击浏览器的后退按钮时,我会被带到 url,localhost:4200/buses/big/bus-details?busId=abc
尽管该ngOnInit()
函数在从第一次更新移动到第二次更新时只调用一次网址。
我一直都是这样导航,但从来没有出现过问题。我什至检查过该NavigationStart
事件只触发一次。
我正在寻找的是不应该发生这种 URL 更新,我能做些什么来防止在导航时更新 URL?
更新:我观察到此错误仅在通过特定功能模块路由时发生,但如果我从根路由到模块,AppModule
则不会发生此 URL 更新,也不会创建两个导航,即我不需要单击后退按钮两次去我调用导航功能的路径/组件。因此,这似乎是正在完成导航的功能模块中的错误,而不是我正在导航的组件中的错误。
解决方案
在我添加到我的问题的更新之后,我能够解决我的问题,尽管我无法找出发生这种情况的根本原因。以前,当我遇到问题时,我是从在 Feature 模块中声明的组件中收到navigate
的对象调用函数Router
,我还观察到此导航错误仅来自功能模块组件,而不是来自 AppModule 中定义的组件,因此有服务中定义的AppModule
,我首先将该服务注入到功能模块组件中,然后使用该Router
服务的对象调用如下所示的导航功能,一切运行顺利。
this.globalService.router.navigate(path);
推荐阅读
- python - 如何以字符串格式查找熊猫数据框列中特定值的索引?
- ios - Xcode 11.5 中的 Firebase 链接器警告
- language-agnostic - 在 Vulkan 中更新顶点缓冲区的最正确的方法
- azure - Azure 数据工厂“Set_Variabe”数组和“FOR_EACH”exe_pipelines 活动
- pandas - 用当前子目录名称填充数据框中的列值
- xml - 如何使用 Python 遍历日志文件中的 xml
- typescript - 打字稿模板类 typeof
- linux - Cassandra - 内存不足(大型服务器)
- google-app-engine - 我可以将哪个自动缩放数据库与 Google App Engine 一起使用
- php - 如何通过payeer支付API显示payeer钱包余额?