改变路线而不改变角度5的URL

时间:2017-11-21 09:21:09

标签: angular typescript

我使用skipLocationChange属性改变了我的路线而没有更改网址。

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

但是当我刷新页面时它会转到之前的路线。它应该是最新的路线。我怎么能这样做。请帮助我。

2 个答案:

答案 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的目的是实际欺骗浏览器以为没有发生状态变化。