2016-07-15 139 views

risposta

14

È possibile utilizzare lo snapshot del componente di percorso attivato per ottenere questo URL.

import { Router, ActivatedRoute } from '@angular/router'; 
constructor(
    private router: Router, 
    private activatedRoute: ActivatedRoute) { 

    console.log("routes"); 
    console.log(activatedRoute.snapshot.url); // array of states 
    console.log(activatedRoute.snapshot.url[0].path); 
} 

Link originale SO rispondere da Jose G Varanam How to get current route

+5

Ottengo "TypeError: Impossibile leggere la proprietà 'percorso' di undefined" per l'ultima istruzione 'console.log' –

+0

' snapshot.url' non restituisce gli stati dalla radice. Ho questa soluzione 'this.route.snapshot.pathFromRoot.map (o => o.url [0]) join ('/')' – NinjaOnSafari

4

L'user5049376 risposta ha dato non ha funzionato per me. la proprietà dell'URL non era definita.

console.log(activatedRoute.snapshot.url[0].path); 

anziché utilizzare la proprietà firstChild.

console.log(this.activatedRoute.snapshot.firstChild.url[0].path); 
+1

Posso anche confermare che 'activatedRoute.snapshot.url [0] .path 'lancia un' TypeError: impossibile leggere la proprietà 'path' di undefined'. La soluzione che ha funzionato per me è 'activatedRoute.snapshot.firstChild.url [0] .path'. Sto usando Angular 4.0.0 e Angular CLI 1.1.0. – kimbaudi

6

Questo funziona per me.

Import questo:

import { Router } from '@angular/router'; 

poi passarlo al costruttore:

path: any; 

constructor(private router: Router) { 
    this.path = this.router.url; 
    console.log(this.path); 
} 
+1

Se c'è una querystring che è inclusa nel percorso, quindi non è proprio il percorso. –

5

se si ricarica la pagina, non è possibile ottenere il percorso tracciato dal router o ActivatedRoute. È possibile utilizzare window.location.pathname anziché quello.

+1

Hai salvato la mia giornata :) – Ismaestro

0

Ho provato a utilizzare le altre risposte e tutte si ritrovano con non definito.

Quindi ho fatto questo:

#AppComponent 
constructor(private router: Router){ 
    // Subscribe to RouterEvents 
    this.router.events 
    .subscribe((event) => { 
    if (event instanceof NavigationStart) { 
     // Could add more chars url:path?=;other possible 
     const urlDelimitators = new RegExp(/[?//,;&:#$+=]/); 
     let currentUrlPath = event.url.slice(1).split(urlDelimitators)[0]; 
     console.log('URL_PATH: ', currentUrlPath); 
    } 
    }); 
} 

mi iscrivo al router cambia in modo che quando NavitionStartEvent accade una nuova URL_PATH viene trovato.