Uncaught (в обещании): ошибка: недопустимая защита CanActivate - PullRequest
0 голосов
/ 05 марта 2019

Я новичок для angular 7 и сейчас пытаюсь реализовать CanActive, но я получаю ошибку:

enter image description here

Может кто-нибудь подсказать мне, как это преодолеть.Вот мои примеры кода:

auth.guard.ts:

import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs';
import { AuthService } from './auth-service.service';
import {Router} from '@angular/router';

@Injectable({
 providedIn: 'root'
})
export class AuthGuard implements CanActivate {
constructor(private auth: AuthService,
private myRoute: Router){
}

canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
if(this.auth.isLoggednIn()){
  return true;
}else{
  this.myRoute.navigate(["login"]);
  return false;
}
  }
}

1 Ответ

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

Использование обещания в условии if всегда плохая идея, поскольку оно не разрешается.Вы можете вернуть само обещание, используя resolve, чтобы передать полученное логическое значение дальше по строке:

canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Promise<boolean> | boolean {
   return new Promise(resolve =>
     this.auth.isLoggednIn()
       .then(status: boolean => {
         if(status === false) {
           this.myRoute.navigate(["login"]);
         }
         resolve(status);
       })
       .catch(() => {
         this.myRoute.navigate(["login"]);
         resolve(false);
         // ... or any other way you want to handle such error case
       })
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...