Come posso accedere alle informazioni sul percorso successivo all'interno guardia "canDeactivate" nel angular2 nuovo routerAccedere alle informazioni di percorso successivo all'interno canDeactivate guardia nel nuovo router angular2
5
A
risposta
0
Sono stato bloccato su quello stesso identico problema. Nel mio caso, la mia logica canDeactivate annulla/reindirizza la rotta successiva in modo condizionale. A questo punto, si spera che ci sia un modo migliore, sto usando la seguente soluzione
- Dal mio componente, gancio nel
Router
eventi (in particolareRoutesRecognized
) per registrare il percorso per un uso successivo. - Implementare
canDeactivate
e utilizzare i dati del percorso salvato per restituire true o false.
ngOnInit(): void {
\t this.tabbedSearch = this.profilesService.currentProfile.tabbedSearch;
\t this.router.events
\t \t .filter(e => e instanceof RoutesRecognized)
\t \t .map(e => <RoutesRecognized> e)
\t \t .subscribe((e) => {
\t \t \t this.lastRoute = e.state.root.firstChild.routeConfig.path;
\t \t \t this.lastParams = e.state.root.firstChild.params;
\t \t });
}
public canDeactivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
\t // do not navigate away if we are doing tabbed search AND the new route is the article details view
\t if (this.tabbedSearch && this.lastRoute == "article/details/:type/:id/:version") {
\t \t this.tabbedDetails.push(Object.create(this.lastParams));
\t \t return false;
\t }
\t else {
\t \t return true;
\t }
}
(Nota: possibile non eseguire il frammento, ma per qualche motivo la formattazione di codice di esempio non è stato il rendering correttamente.)
davvero, davvero non mi piace questo ma non ho trovato nessun altro modo.