【发布时间】:2016-11-02 19:07:59
【问题描述】:
我已经升级为使用路由器已弃用的新 Angular 2 路由器,并且一些行为发生了变化。
我遇到问题的页面是搜索页面。我们选择使用HashLocationStrategy 将所有搜索词放在URL 中。路线如下所示:
const routes: RouterConfig = [
{ path: '', component: HomeComponent },
{ path: 'search/:term/:cat/:page/:sort/:size/:more', component: HomeComponent },
{ path: 'search/:term/:cat/:page/:sort/:size', component: HomeComponent },
{ path: 'search/:term/:cat/:page/:sort', component: HomeComponent },
{ path: 'search/:term/:cat/:page', component: HomeComponent },
{ path: 'search/:term/:cat', component: HomeComponent },
{ path: 'search/:term', component: HomeComponent },
{ path: 'details/:accountNumber', component: DetailsComponent }
];
我知道查询字符串方法可能更适合所有这些选项,但项目要求由其他人决定...
无论如何,如果我使用this.router.navigate(['/search/Hello']); 导航到localhost/#/search/Hello,那么路由器工作正常,一切都很好。在该页面上,如果我尝试this.router.navigate(['/search/World']);,则浏览器地址栏中的 URL 将相应更新,但组件根本不会更改。
以前我可以使用routerCanReuse 表示我确实想重用搜索组件,并且routerOnReuse 会在导航发生时重新运行搜索。我在@angular/router 中看不到与这些相同的内容。如何使用新的 URL 参数重新加载当前路由?
我正在运行 Angular 2 的 2.0.0-rc.3 版本和 @angular/router 的 3.0.0-alpha.8。
【问题讨论】:
-
我面临同样的问题。你能告诉我我可以在哪里把这段代码放在 app.component.ts 页面或实际页面上(没有重新加载)。还有一件事是 ** this.service.get(term).then(result => { console.log(result); });**。你能简单解释一下吗?