web-dev-qa-db-fra.com

Angular2 get ActivatedRoute url

Je veux obtenir l'URL qui provient de ceci:

this.router.navigate(./somepath, { relativeTo: this.route })

this.route est du type ActivatedRoute.

J'ai essayé url: string = route.snapshot.url.join(''); mais cela donne une chaîne vide.

9
Robin Dijkhof

Vous pouvez utiliser la route activée pour obtenir une URL active.

import { ActivatedRoute } from '@angular/router';
 constructor(
    private activatedRoute: ActivatedRoute) {
    console.log(activatedRoute.snapshot['_routerState'].url); 
}
10
viks

Cela devrait aider:

constructor(router: Router) {
  const url = router.url;
}
5
Gabriel Martins

Où essayez-vous de l'utiliser?

Puisque vous utilisez route, qui est injecté dans le constructeur, vous ne pouvez pas utiliser route directement dans la propriété init. Vous devez donc le faire dans ou après l'appel du constructeur. Donc, quelque chose comme ça devrait marcher:

export class Test {
    url: string
    constructor(private route: ActivatedRoute) {
        this.url = route.snapshot.url.join('');
    }
}

La documentation officielle montre un moyen différent d’obtenir l’URL actuelle: https://angular.io/docs/ts/latest/api/router/index/ActivatedRoute-interface.html , Qui est asynchrone ce n'est peut-être pas ce que vous recherchez. J'espère que cela t'aides :)

3
JonasMH

Je l'ai comme ça:

import { filter, take } from 'rxjs/operators';

constructor(
  private router: Router
) {
  this.router.events.pipe(
    filter(event => event instanceof ChildActivationEnd),
    take(1),
  ).subscribe(event=>{
    const url = event.snapshot['_routerState'].url;
    console.log('url', url);
  });
}
1
Alex Po

Je suis en mesure d'obtenir l'URL de la page actuelle à l'aide de l'extrait de code suivant

constructor(private activatedRoute: ActivatedRoute){}

const url = this.activatedRoute['_routerState'].snapshot.url;
0
Kokkonda Abhilash