URL路径的某些部分已删除,并且浏览器历史记录中存在双重导航

Kar*_*ani 5 angular

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

this.router.navigate(['buses','big','bus-details'],queryParamas:{busId:'abc'});然后在第一个导航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()函数在第一次更新到第二次更新时仅被调用一次网址。

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

我正在寻找的是不应进行此URL更新,该怎么做以防止在导航时更新URL?

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

Kar*_*ani 1

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

this.globalService.router.navigate(path);
Run Code Online (Sandbox Code Playgroud)