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.
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);
}
Cela devrait aider:
constructor(router: Router) {
const url = router.url;
}
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 :)
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);
});
}
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;