I have a Master-Detail container component with 2 presentational components master and detail. The user will click the link http://localhost:4200/master. The master component will retrieve the data from the server and display a list of items, and also navigate the detail component to the first item in the list. The route will now change to http://localhost:4200/master/detail:1.
Now the user can go back to and click the link http://localhost:4200/master again. But nothing happens to the master component and no new data is downloaded. The components behave like they are cached.
I want to refresh the whole Master-Detail if the user clicks http://localhost:4200/master again. The data need to be downloaded from the server and display the detail item like the user has clicked the first time.
What settings I need to have in the components or the module, and the changes needed to the routes to make it happen?
This is my current routes:
const detailRoutes = [
{
path: 'detail/:id',
component: DetailComponent
}
];
const routes: Routes = [
{
path: 'master',
component: MasterComponent,
children: [
...detailRoutes
],
},
...detailRoutes];
Easiest fix would be to set router option called onSameUrlNavigation to 'reload'
This will force reload when you hit the same URL just as if you navigated to the route for the first time.
EDIT: in order for
ngOnInitto run on same url navigation, you also need to set your router's reuse strategy accordingly.Inject your router (app.component preferred):