私のアプリでは制限されたルートを追加したいと思います。彼らはここではドキュメントで説明されているように私はガードを書くが、私はtypescriptですなしでそれを達成しよう:https://angular.io/docs/ts/latest/guide/router.html#!#guardsAngular2 CanActivate undefined
私のガードは、次のようになりますが、それは@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の一部ではありません。あなたは、es6とtypeScriptなしでguard/canActiveのコンセプトを使う方法を知っていますか? –
@ d-bro82それを拡張する必要はありません。TypeScriptと同じように、ES6でも同様に動作します。 – PierreDuc
これはとても役に立ちました。 –