Questo ora può essere fatto in Angular 5.1 usando la onSameUrlNavigation
proprietà della configurazione del router.
Ho aggiunto un blog che spiega come qui, ma l'essenza è la seguente
https://medium.com/engineering-on-the-incline/reloading-current-route-on-click-angular-5-1a1bfc740ab2
onSameUrlNavigation
Nell'opzione di abilitazione della configurazione del router , impostandola su 'reload'
. Ciò fa sì che il router attivi un ciclo di eventi quando si tenta di navigare verso un percorso già attivo.
@ngModule({
imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: 'reload'})],
exports: [RouterModule],
})
Nelle definizioni del percorso, impostare runGuardsAndResolvers
su always
. Questo dirà al router di dare sempre il via ai cicli di guardie e risolutori, lanciando eventi associati.
export const routes: Routes = [
{
path: 'invites',
component: InviteComponent,
children: [
{
path: '',
loadChildren: './pages/invites/invites.module#InvitesModule',
},
],
canActivate: [AuthenticationGuard],
runGuardsAndResolvers: 'always',
}
]
Infine, in ogni componente che si desidera abilitare il ricaricamento, è necessario gestire gli eventi. Questo può essere fatto importando il router, associandolo agli eventi e invocando un metodo di inizializzazione che reimposta lo stato del componente e recupera nuovamente i dati, se necessario.
export class InviteComponent implements OnInit, OnDestroy {
navigationSubscription;
constructor(
// … your declarations here
private router: Router,
) {
// subscribe to the router events. Store the subscription so we can
// unsubscribe later.
this.navigationSubscription = this.router.events.subscribe((e: any) => {
// If it is a NavigationEnd event re-initalise the component
if (e instanceof NavigationEnd) {
this.initialiseInvites();
}
});
}
initialiseInvites() {
// Set default values and re-fetch any data you need.
}
ngOnDestroy() {
if (this.navigationSubscription) {
this.navigationSubscription.unsubscribe();
}
}
}
Con tutti questi passaggi in atto, è necessario abilitare il ricaricamento del percorso.