1

J'essaie de vérifier la météo que l'utilisateur a déjà sélectionnée pour se connecter. S'ils sélectionnent, ils voient les employés de l'entreprise. Sinon, nous redirigerons vers la page de connexion. J'ai utilisé Angular Route Guard pour ce faire. Mais ce n'est pas continuer la route et s'arrête là, même si je reviens vrai. Comment continuer la routeAngular Route Guard CanActivate arrête le routage

Route config

const appRoutes: Routes = [ 
    { path: "employees", component: EmployeeListComponent, canActivate: [AuthGuard] }, 
    { path: "", redirectTo: "/employees", pathMatch: "full" }, 
    { path: "login", component: LoginComponent }, 
    { path: "**", component: PageNotFoundComponent } 
]; 

Auth Garde

import { Injectable } from '@angular/core'; 
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; 
import { AppService } from '../../app/app.service'; 

@Injectable() 
export class AuthGuard implements CanActivate { 
    constructor(private appService: AppService, private router: Router) { 

    } 

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
     let user: IUserViewData; 
     var _this = this; 

     this.appService.getUserViewData() 
      .subscribe(
       (response: IUserViewData) => { 
        user = response; 
        if (user.LoggedInCompany != null) { 

         return true; 
        } else { 
         _this.router.navigate(['/login']); 
         return false; 
        } 
      }, 
      (error: any) => { }); 

     return false; 
    } 
} 

Répondre

1

changement abonnez-vous à la carte qui retourne Observable<boolean>

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
    var _this = this; 
    return this.appService.getUserViewData().map(user => { 
     if (user.LoggedInCompany != null) { 
      return true; 
     } else { 
      _this.router.navigate(['/login']); 
      return false; 
     } 
    }); 
} 
+0

Merci, il a fait un tour. – Developer