I am currently writing my first Angular 2 Application. I have an OverviewComponent which has the following simple template:
<div class="row">
<div class="col-lg-8">
<router-outlet></router-outlet>
</div>
<div class="col-lg-4">
<app-list></app-list>
</div>
</div>
when accessing the url /
my router redirects me to /overview
which then loads a map within the router-outlet. The <app-list>
has a list of clickable items which triggers a <app-detail>
to be displayed instead of the app component. Therefor I pass the id of the referring json file in the url like that: /details/:id
(in my routes).
All of the above works totally fine. If I now click on one of the list items the details are shown, BUT when I select another list element the view doesn't change to the new details. The URL does change but the content is not reloaded. How can I achieve a Reinitialization of the DetailComponent?
You can change the routeReuseStrategy directly at the component level:
constructor(private router: Router) {
// force route reload whenever params change;
this.router.routeReuseStrategy.shouldReuseRoute = () => false;
}
Likewise, the reuse strategy can be changed globally.
This does not necessarily address your problem directly but seeing how this question is the first search result for "angular 2 reload url if query params change" it might save the next person from digging through the github issues.