I've upgraded to use the new Angular 2 router from router-deprecated and some behavior has changed.
The page I'm having issues with is a search page. We've chosen to put all the search terms in the URL using the HashLocationStrategy
. The routes look like this:
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 }
];
I know a query string approach might be better fit for all these options but project requirements decided by other people...
Anyway if I navigate to localhost/#/search/Hello
using this.router.navigate(['/search/Hello']);
then the router works fine and everything is great. While on that page if I try to this.router.navigate(['/search/World']);
then the URL in the browser's address bar will update accordingly but the component doesn't change at all.
Previously I could use routerCanReuse
to indicate that I did want to reuse the search component and routerOnReuse
would rerun the search when the navigation happened. I don't see equivalent's to these in @angular/router
. How can I reload the current route with new URL parameters?
I'm running version 2.0.0-rc.3 for Angular 2 and 3.0.0-alpha.8 of @angular/router.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…