Я хочу добавить некоторые ограниченные маршруты в свое приложение. Я пишу гвардию, как они описаны в документации здесь, но я стараюсь, чтобы достичь его без машинописи: https://angular.io/docs/ts/latest/guide/router.html#!#guardsAngular2 CanActivate undefined
My Guard выглядеть так, но я не могу использовать CanActivate, поскольку он не определен в @angular/router
v3.1.1
import { Router, CanActivate } from '@angular/router';
import { AuthService } from './app.auth.service';
console.log(CanActivate); // undefined
export class AuthGuard extends CanActivate {
constructor(AuthService) {
super();
this._authService = AuthService;
}
canActivate() {
return this.checkIfLoggedIn();
}
_checkIfLoggedIn() {
const user = this._authService.getUser();
return user;
}
static get parameters() {
return [[AuthService]];
}
}
Любые идеи?
EDIT
Этот подход работает, как и ожидалось, благодаря @PierreDuc помощи мне на колею.
import { Router } from '@angular/router';
import { AuthService } from './app.auth.service';
export class AuthGuard {
constructor(AuthService, Router) {
this._authService = AuthService;
this._router = Router;
}
canActivate() {
if (this._authService.isLoggedIn()) {
return true;
}
this._router.navigate(['/login']);
return false;
}
static get parameters() {
return [[AuthService], [Router]];
}
}
Хорошо, спасибо. Интерфейс - это ключевое слово. Интерфейсы не являются частью ES6, правильно ?! У вас есть идея, как использовать концепцию guard/canActive с es6 и без TypeScript? –
@ d-bro82 нет необходимости расширять его, чтобы можно было защищать любые способы. Так же, как и в TypeScript, он должен работать и в ES6. – PierreDuc
Получил! Это было очень полезно, –