Angular2 pathLocationStrategy:url更改导致页面重新加载

时间:2016-05-04 15:02:11

标签: angular angular2-routing html5-history

使用HashLocationStrategy时,我可以通过手动更改浏览器地址栏中的地址来更改路线,而无需重新加载页面。即从mysite/#/home导航到mysite/#/profile

但是,如果我使用PathLocationStrategy(这是默认的位置策略),当我尝试做同样的事情时,我会有不需要的页面重新加载。即从mysite/home导航到mysite/profile

有可能解决这个问题吗?

我正在使用Angular 2.0.0-beta17

2 个答案:

答案 0 :(得分:4)

那是“按设计”。当您只更改#...时,没有任何内容可以发送到服务器。 #...部分始终只由浏览器处理,从不发送到服务器。

当您在#之前更改部件时,如果您没有#而不是之前的所有内容 - # - 那么浏览器需要发出新请求到服务器以获取URL。

如果您使用window.history... API(https://developer.mozilla.org/en-US/docs/Web/API/History_API),那么您告诉浏览器只更新网址栏但不要呼叫服务器。 Angular路由器使用此API,因此这可以在应用程序内部或使用后退或前进按钮时使用,但不能在手动更改URL时使用。

答案 1 :(得分:3)

如果要在路由更改时使用HTML5路径(PathLocationStrategy)而不使用NG2页面刷新,则必须使用routerLink指令,即:

<a [routerLink]="['/my-page']">My Page</a>
<a [routerLink]="['/my-other-page']">My Other Page</a>

在@NgModule init导入:

RouterModule.forRoot([
  {path: '',              component: DefaultComponent},
  {path: 'my-page',       component: MyPageComponent},
  {path: 'my-other-page', component: MyOtherPageComponent}
]);