Los documentos actuales solo hablan de obtener parámetros de ruta, no los segmentos de ruta reales.
Por ejemplo, si quiero encontrar el padre de la ruta actual, ¿cómo es eso posible?
angular
angular2-routing
Pdeva
fuente
fuente
window.location.pathname
window.location
es que si en el futuro quieren implementar la representación del lado del servidor, enfrentarán algunas dificultades yawindow
que no existe en el servidor Node.js, pero necesitan usar los métodos estándar Angulares para acceder a la ruta y estarán bien tanto en el servidor como en el navegador.Respuestas:
El nuevo enrutador V3 tiene una propiedad de URL.
fuente
this.router.events.filter((event: any) => event instanceof NavigationEnd).subscribe(event => { console.log('this is what your looking for ', event.url); });
. Asegúrese de importarimport { Router, NavigationEnd } from '@angular/router';
RC4 angular:
Puedes importar
Router
desde@angular/router
Luego inyectarlo:
Luego llame a su parámetro de URL:
fuente
Inyecte
Location
en su componente y lealocation.path();
Debe agregar enNecesita agregarROUTER_DIRECTIVES
algún lugar para que Angular pueda resolverLocation
.import: [RouterModule]
al módulo.Actualizar
En el enrutador V3 (RC.3) puede inyectar
ActivatedRoute
y acceder a más detalles utilizando susnapshot
propiedad.o
Ver también escucha de eventos de enrutador Angular 2
fuente
navigate
método junto con el nombre (adjunto) de la ruta secundaria a la que quiero navegar?MyTrackingService
explicado en stackoverflow.com/a/34548656/217408 permitiría acceder a estos valores.canActivate()
método, de modo que pueda redirigir a una página de "inicio de sesión", y luego redirigir volver a la ruta original después de autenticación del usuario?para nuevo enrutador> = RC.3
¡La mejor y más simple forma de hacerlo es!
fuente
Utilizar este
Y en
main.ts
importaciónEDITAR
Manera moderna
fuente
/
.Para aquellos que todavía están buscando esto. En Angular 2.x hay algunas formas de hacerlo.
Referencias
fuente
Para obtener los segmentos de ruta:
fuente
Puedes probar con
Formas alternativas
window.location.pathname
que da el nombre del camino.fuente
Para obtener de manera confiable la ruta actual completa, puede usar esto
fuente
El
window
objeto nativo también funciona bienNOTA: NO UTILICE ESTO EN RENDER LADO DEL SERVIDOR
fuente
versión corta si tienes enrutador importado, simplemente puede usar algo como
this.router.url === "/ search"
de lo contrario, haga lo siguiente
1) Importar el enrutador
2) Declarar su entrada en constructor
3) Use su valor en su función
La respuesta de @victor me ayudó, esta es la misma respuesta que él pero con un pequeño detalle, ya que podría ayudar a alguien
fuente
fuente
En Angular2 Rc1 puede inyectar RouteSegment y pasarlos en el método naviagte.
fuente
Con angular 2.2.1 (en un proyecto basado en angular2-webpack-starter) funciona esto:
En la plantilla de AppComponent puede usar, por ejemplo, {{activeUrl}}.
Esta solución está inspirada en el código de RouterLinkActive.
fuente
angular 2 rc2
fuente
Esto es lo que me funciona en Angular 2.3.1.
El
data
es un objeto y necesitamos laurl
propiedad contenida en ese objeto. Así que capturamos ese valor en una variable y también podemos usar esa variable en nuestra página HTML. Por ejemplo, quiero mostrar un div solo cuando el usuario está en la página de inicio. En este caso, el valor de la URL de mi enrutador será/home
. Entonces puedo escribir un div de la siguiente manera:fuente
Tuve el mismo problema usando
Obtengo la ruta actual con parámetros de consulta. Una solución alternativa que hice fue usar esto en su lugar:
No es una solución realmente agradable, pero útil.
fuente
Puedes usar
ActivatedRoute
para obtener el enrutador actualRespuesta original (para la versión RC)
¡Encontré una solución en AngularJS Google Group y es muy fácil!
Aquí está la respuesta original.
https://groups.google.com/d/msg/angular/wn1h0JPrF48/zl1sHJxbCQAJ
fuente
url
ahora ya no es la URL y una cadena, sino aComponentInstruction
.fuente
Para tus propósitos puedes usar
this.activatedRoute.pathFromRoot
.Con la ayuda de pathFromRoot puede obtener la lista de URL principales y verificar si la parte necesaria de la URL coincide con su condición.
Para obtener información adicional, consulte este artículo http://blog.2muchcoffee.com/getting-current-state-in-angular2-router/ o instale ng2-router-helper desde npm
fuente
Para encontrar el padre de la ruta actual, puede obtener
UrlTree
el enrutador, utilizando rutas relativas:Luego para obtener los segmentos de la salida primaria:
fuente
A partir de ahora, estoy recibiendo mi camino de la siguiente manera:
Donde,
router
es una instancia deActivatedRoute
fuente
fuente
fuente
esto es simple, en angular 2 solo necesita importar la biblioteca de enrutadores de esta manera:
Luego, en el constructor del componente o servicio, debe crear una instancia de esta manera:
Luego, en cualquier parte del código, ya sea en una función, método, construcción, lo que sea:
fuente
Puede usar en el archivo .ts
fuente
esta podría ser su respuesta, use el método de parámetros de ruta activada para obtener el parámetro de la URL / ruta que desea leer, a continuación se muestra un fragmento de demostración
fuente
fuente
Si necesita acceder a la URL actual, generalmente debe esperar a que NavigationEnd o NavigationStart hagan algo. Si solo se suscribe a los eventos del enrutador, la suscripción generará muchos eventos en el ciclo de vida de la ruta. En su lugar, use un operador RxJS para filtrar solo el evento que necesita. ¡El efecto secundario beneficioso de esto es que ahora tenemos tipos más estrictos!
fuente
Estaba enfrentando el problema donde necesitaba la ruta URL cuando el usuario navega por la aplicación o accede a una URL (o actualiza una URL específica) para mostrar componentes secundarios basados en la URL.
Además , quiero un Observable que se pueda consumir en la plantilla, por lo que router.url no era una opción. El enrutador tampoco emite suscripción porque el enrutamiento se activa antes de que se inicialice la plantilla del componente.
¡Espero que ayude, buena suerte!
fuente