我使用skipLocationChange属性改变了我的路线而没有更改网址。
<a [routerLink]="['/articledetail']" skipLocationChange><h4>
{{article.HeadLine}}</h4></a>
但是当我刷新页面时它会转到之前的路线。它应该是最新的路线。我怎么能这样做。请帮助我。
答案 0 :(得分:2)
你根本做不到。刷新页面时,将破坏应用程序的当前状态。唯一具有状态的“东西”是你的网址。由于您跳过位置更改,因此它将返回上一页。
答案 1 :(得分:1)
浏览器对Angular路由一无所知。 skipLocationChange
执行它所说的内容 - 它不会在任何地方注册状态更改,也不会在浏览器历史记录中注册。如果您从'/b'
转到'/a'
跳过位置更改,浏览器仍然认为您在'/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
的目的是实际欺骗浏览器以为没有发生状态变化。