En Angular2, ¿cómo verifico si existe una ruta?
Tengo un método que recuerda a qué ruta navegar si el usuario no está autorizado.
Al iniciar sesión tengo:
this.router.navigate([this.authService.redirectUrl]);Pero solo quiero navegar SI el redirectUrl hace referencia a una ruta válida, algo así como...
if (this.authService.redirectUrl is a valid route) { this.router.navigate([this.authService.redirectUrl]); }¿Hay alguna manera de verificar esto?
Puede verificar si la ruta existe así usando la forma de promesa:
this.router.navigate(['redirect']) .then(data => { console.log('Route exists, redirection is done'); }) .catch(e => { console.log('Route not found, redirection stopped with no error raised'); });Si la ruta está definida, se producirá la redirección. Si no, puede ejecutar algún código en el bloque catch.
tengo el manejo para prevenir por las urls que no existe
{path: 'dashboard', component: DashboardComponent} {path: 'demo/:demo', component: DemoComponent}, {path: '**', redirectTo: '/dashboard'} ** significa todos los caminos que no pueden redirigir
Tal vez con algo como esto:
redirectUrl: string; this.redirectUrl = this.authService.redirectUrl ? this.authService.redirectUrl : '/home'; this.router.navigate([this.redirectUrl]); Esto verificará si existe la URL de redirección, si no, se redirigirá a la ruta alternativa /home (puede cambiar a la dirección que desee)
Editar: si solo desea verificar si this.authService.redirectUrl , puede intentar algo como esto:
if(this.authService.redirectUrl){ //do what you want }