Может ли CanActivate в Angular продолжить после перехода на другой маршрут? - PullRequest
0 голосов
/ 02 марта 2019

В режиме аутентификации при отсутствии аутентификации я хочу отобразить логин Facebook.Интересно, будет ли работать router.navigate(['login']) в canActivate для запуска аутентификации и возврата асинхронного результата входа в систему, или он будет прерван вызовом router.navigate.Интересно о правильном и простом потоке здесь.

1 Ответ

0 голосов
/ 02 марта 2019

да, это возможно.Вы также можете использовать navigateByUrl, чтобы перейти на Facebook

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

@Injectable()
export class AuthGuardService implements CanActivate {

  constructor(private userService: UserService, private router: Router) {}

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    if (this.userService.isValid()) {
      return true;
    } else {
      this.router.navigate(['/login'], {
        queryParams: {
          return: state.url
        }
      });
      return false;
    }
  }
}

. Фрагменты кода см. в разделе / ​​другие примеры можно найти по адресу: http://gnomeontherun.com/2017/03/02/guards-and-login-redirects-in-angular/

...