gpt4 book ai didi

angular - URL 路径的某些部分被删除,并在浏览器历史记录中进行双重导航

转载 作者:太空狗 更新时间:2023-10-29 17:38:42 24 4
gpt4 key购买 nike

我在 Angular 中使用 Routernavigate 函数。这导致导航一次,但在历史记录中创建两次导航,并且 URL 会自动更新,URL 的某些部分被剥离,如下所述:

this.router.navigate(['buses','big','bus-details'],queryParamas:{busId:'abc'}); 然后在第一个导航中的 url将是 localhost:4200/buses/big/bus-details?busId=abc 但甚至不会在一秒钟内将 url 更新为 localhost:4200/buses/big/bus-details 当我点击浏览器的后退按钮时,我被带到 url localhost:4200/buses/big/bus-details?busId=abc 虽然 ngOnInit() 从第一次更新到第二次更新 url 时,函数只被调用一次。

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

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

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

最佳答案

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

this.globalService.router.navigate(path);

关于angular - URL 路径的某些部分被删除,并在浏览器历史记录中进行双重导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56089596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com