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

Angular2 pathLocationStrategy: url change cause page reload

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

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

可以解决这个问题吗?

我正在使用 Angular 2.0.0-beta17

那是 "as designed"。当您仅更改 #... 时,则没有任何内容可发送到服务器。 #... 部分始终仅由浏览器处理,从不发送到服务器。

当您更改 # 之前的部分时,如果您没有 #,那么一切都是之前的 # 部分,那么浏览器需要制作一个向服务器发出新请求以获取 URL.

如果你使用 window.history... API (https://developer.mozilla.org/en-US/docs/Web/API/History_API) 然后你告诉浏览器只更新 URL 栏但不要调用服务器. Angular 路由器使用此 API 因此这在应用程序内或当您使用后退或前进按钮时有效,但在您手动更改 URL.

时无效

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

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

在@NgModule 初始化导入:

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