使用HashLocationStrategy时,我可以通过手动更改浏览器地址栏中的地址来更改路线,而无需重新加载页面。即从mysite/#/home
导航到mysite/#/profile
但是,如果我使用PathLocationStrategy(这是默认的位置策略),当我尝试做同样的事情时,我会有不需要的页面重新加载。即从mysite/home
导航到mysite/profile
有可能解决这个问题吗?
我正在使用Angular 2.0.0-beta17
答案 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}
]);