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}
]);
在使用 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}
]);