在angular 5中更改路由而不更改url

在angular 5中更改路由而不更改url,angular,typescript,Angular,Typescript,我使用下面的skipLocationChange属性更改了路线,但没有更改url <a [routerLink]="['/articledetail']" skipLocationChange><h4> {{article.HeadLine}}</h4></a> {{文章标题} 但当我刷新页面时,它会转到上一条路线。它应该是最新路线。我怎么做。请帮助我 你就是不能。刷新页面时,应用程

我使用下面的skipLocationChange属性更改了路线,但没有更改url

          <a [routerLink]="['/articledetail']" skipLocationChange><h4>
                    {{article.HeadLine}}</h4></a>

{{文章标题}

但当我刷新页面时,它会转到上一条路线。它应该是最新路线。我怎么做。请帮助我

你就是不能。刷新页面时,应用程序的当前状态将被破坏。唯一有状态的“东西”是你的url。由于您跳过了位置更改,它将返回到上一页

浏览器对角度布线一无所知
skipLocationChange
照它说的做-它不会在任何地方注册状态更改,也不会在浏览器历史记录中注册。如果您从
'/a'
跳过位置更改转到
'/b'
,浏览器仍然认为您在
'/a'
上。但您可以尝试以下方法:

import { Location } from '@angular/common';
import { Router } from '@angular/router';
...
constructor(private location: Location, private router: Router) {}
...
// handle navigation not  by routerLink, but manually inside your component:
public navigate(): void {
   this.router.navigateByUrl('/articledetail', {skipLocationChange: true});
   this.location.replaceState('/articledetail');

}
在您的html中:

<a (click)="navigate()">Your title</a>
你的头衔

但我并不清楚这一点,因为
skipLocationChange
的目的实际上是欺骗浏览器,使其认为没有发生任何状态更改。

这不完全正确,请参阅我的答案以获得可能的解决方案。哦。很抱歉,我甚至知道这项技术的用法,因为我在当前项目中使用了这项技术:您可以在页面中使用具有不同内容的选项卡,并为每个选项卡分配一个url,并使用它来创建干净的历史记录(当您使用
replaceState
时,只有最后一个选项卡的url会存储在浏览器的历史记录中,但当用户单击浏览器的后退按钮时,它不会导航到以前的选项卡,而是导航到上一页)。是的,这确实可以解决您的问题。谢谢。但它没有按我的预期工作。我的路线在导航之前已更改。单击锚定标记后,它应转到下一条路线,并且不应更改URL。请稍候,是否要:1.从“/a”导航到“/b”2。但浏览器仍将显示“/a”3。刷新时,您希望“/b”继续是否显示?“我需要从a导航到b。但url应该是a。在引用页面内容时,应该是b。你看,这在理论上甚至是不可能的。你的应用程序已被销毁,剩下的唯一“状态”是你的url,它指向“/a”,刷新后将加载