skiplocationchange route query navigate current activatedroute angular2-routing

angular2 routing - route - Cómo obtener solo la ruta de acceso de la cadena de url completa



this router navigate params (6)

Cuando uso Router ( this.router.url ) obtengo la cadena /MyRouterName?type=abc , en algún momento /MyRouterName si no tengo el parámetro

¿Puedo obtener solo la ruta /MyRouterName (para todos los casos) de la URL completa?


Esto funciona para mi

Importa esto:

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

Luego se lo pasa al constructor:

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


He intentado usar las otras respuestas y todas terminan con indefinido .

Así que hice esto:

#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); } }); }

Me suscribo a los cambios del enrutador, por lo que, cuando se produce NavitionStartEvent, se encuentra una nueva URL_PATH.


La respuesta que ha dado el usuario 5049376 no funcionó para mí. La propiedad url no estaba definida.

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

En lugar de eso utilicé la propiedad firstChild.

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


Puede usar la instantánea del componente de ruta activada para obtener esta 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); }

Enlace a la respuesta SO original por Jose G Varanam Cómo obtener la ruta actual


Si no necesita ser compatible con IE, puede usar la clase de URL para hacer ingeniería inversa de los componentes de URL de la cadena:

(new URL(this.router.url), ''x:/'').pathName

Teniendo en cuenta su ejemplo, el código anterior solo proporcionará la parte "/ MyRouterName" de "/ MyRouterName? Type = abc".

Nota: la parte ''x: /'' solo existe para satisfacer la necesidad de la clase de URL ''para un protocoll (que este.router.url no proporciona).


si vuelve a cargar la página, no puede obtener la ruta de la ruta por Router o ActivatedRoute. Puedes usar window.location.pathname lugar de eso.