यह अब onSameUrlNavigation
राउटर कॉन्फ़िगरेशन की संपत्ति का उपयोग करके कोणीय 5.1 में किया जा सकता है ।
मैंने यह बताते हुए एक ब्लॉग जोड़ा है कि यहाँ कैसे लेकिन इसका सार इस प्रकार है
https://medium.com/engineering-on-the-incline/reloading-current-route-on-click-angular-5-1a1bfc740ab2
अपने राउटर कॉन्फिग को इनेबल onSameUrlNavigation
ऑप्शन पर सेट करें 'reload'
। जब आप पहले से सक्रिय एक मार्ग पर नेविगेट करने का प्रयास करते हैं, तो यह राउटर एक घटना चक्र को आग लगाने का कारण बनता है।
@ngModule({
imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: 'reload'})],
exports: [RouterModule],
})
अपने रूट परिभाषाओं में, पर सेट runGuardsAndResolvers
करें always
। यह राउटर को हमेशा गार्ड्स और रिसॉल्वर साइकल को किक करने, संबद्ध घटनाओं को फायर करने के लिए बताएगा।
export const routes: Routes = [
{
path: 'invites',
component: InviteComponent,
children: [
{
path: '',
loadChildren: './pages/invites/invites.module#InvitesModule',
},
],
canActivate: [AuthenticationGuard],
runGuardsAndResolvers: 'always',
}
]
अंत में, प्रत्येक घटक में जिसे आप पुनः लोड करना सक्षम करना चाहते हैं, आपको घटनाओं को संभालने की आवश्यकता है। यह राउटर को आयात करने, घटनाओं पर बाध्यकारी और एक इनिशियलाइज़ेशन विधि को लागू करने के द्वारा किया जा सकता है जो आपके घटक की स्थिति को रीसेट करता है और यदि आवश्यक हो तो डेटा फिर से प्राप्त करता है।
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();
}
}
}
इन सभी चरणों के साथ, आपके पास रूट पुनः लोडिंग सक्षम होना चाहिए।