I do a check on the user who is on localstorage

import {AuthService} from "./auth.service"; import {UsersService} from "./users.service"; import {User} from "../models/user.model"; @Injectable() export class AuthGuard implements CanActivate, CanActivateChild { private user: User; constructor( private userService: UsersService, private authService: AuthService, private router: Router ) {} canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> { if (window.localStorage.getItem("user") !== null) { this.user = JSON.parse(window.localStorage.getItem("user")); this.userService.getUserByEmail(this.user.email) .subscribe((user: User) => { if (user) { if (user.password === this.user.password) { return true; } else { this.router.navigate(['/login'], { queryParams: { accessDenied: true } }); return false; } } else { this.router.navigate(['/login'], { queryParams: { accessDenied: true } }); return false; } }); } else { this.router.navigate(['/login'], { queryParams: { accessDenied: true } }); console.log("false 3"); return false; } } canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> { return this.canActivate(childRoute, state); } } 

userService:

 import {Http} from '@angular/http'; import {Injectable} from '@angular/core'; import {Observable} from 'rxjs/Observable'; import {User} from '../models/user.model'; import {BaseApi} from '../core/base-api'; @Injectable() export class UsersService extends BaseApi { constructor(public http: Http) { super(http); } getUserByEmail(email: string): Observable<User> { return this.get('users?email=' + email) .map((user: User[]) => user[0] ? user [0] : undefined); } createNewUser(user: User): Observable<User> { return this.post('users', user); } } 

but somehow laterally, it returns true to the campaign late. The problem is that it does not change the url and remains in http: // localhost: 4200 /

Just studying

    0