router.navigate中的{skipLocationChange:true}不起作用;改变状态

时间:2019-04-18 13:58:53

标签: angular angular-routing window-object

由于某些原因,我需要在浏览器中嵌入angular应用程序,出于某些原因,我需要浏览器保存状态,并且不希望angular将新状态推送到浏览器历史记录中。

根据角度文档Here {skipLocationChange:true},我可以这样做。下面是我修改的代码。

this.router.navigate(['/customComponent'],{ skipLocationChange: true });

静止角度仍在浏览器历史记录中推动新的历史记录状态。

state: {navigationId: 2} 

下面是控制台快照。

enter image description here

路由代码有什么问题吗?或我缺少任何参数。

2 个答案:

答案 0 :(得分:0)

问题在于app.module.ts中的路由配置。 由于angular会将默认路径路由到customComponent,它会修改状态,并且没有提供传递skipLocationChange参数的条件,因此我不得不使用appComponent构造函数中的skipLocationChange重新路由到customComponent。

直接引导customComponent也将有所帮助,具体取决于编写的代码。

   const appRoutes: Routes = [
 -     {
 -     path: '',
 -     redirectTo: "/customComponent",
 -     pathMatch: 'full'
 -   },

答案 1 :(得分:0)

我用这个 this.router.navigate(['process-form/' + processDefCustomId + '/' + taskId], { skipLocationChange: true });在 constructor() 和 skipLocationChange: true 中不起作用。

我将我的代码移到 ngOnInit() 方法和 skipLocationChange: true 工作。