2016-08-04 4 views
1

In Angular 2 versuche ich @canActivate für meine Routen zu arbeiten, aber scheint nicht zu funktionieren.In Angular 2 versuche ich @canActivate für meine Routen zu arbeiten, aber scheint nicht zu funktionieren

Dies ist die Version von meinem Router (nicht sicher, ob es mit dieser Version funktioniert): "@ Winkel/Router": Diese "2.0.0-rc.1",

einig meine app.ts Datei:

import {AuthGuard} from './interceptor'; 

@Component({ 
    moduleId: module.id, 
    selector: 'app', 
    providers: [RouterOutlet, RouterOutletMap, ROUTER_PROVIDERS, HTTP_PROVIDERS, HTTP_BINDINGS], 
    template: ` 

    <div class="content"> 
     <router-outlet></router-outlet> 
    </div> 
    `, 
    directives: [ROUTER_DIRECTIVES] 
}) 
@Routes([ 
    { path: '/', component: Home, canActivate: [AuthGuard]}, 
    { path: '/home', component: Home, canActivate: [AuthGuard]} 
]) 
export class AppComponent { 
    constructor(){ 

    } 
} 

Das ist mein authGuard Service:

import { Injectable, Directive } from '@angular/core'; 
import { CanActivate } from '@angular/router'; 

@Directive({ 
    selector: 'authguard' 
}) 

@Injectable() 
export class AuthGuard implements CanActivate { 
    canActivate() { 
    console.log('AuthGuard#canActivate called'); 
    return true; 
    } 
} 

Antwort

1

Angular ist bei Version 2.0.0-rc.4. Der Router hat die Version V3-beta.2. Bitte stellen Sie sicher, dass Sie die neuesten Versionen haben.

@Routes ist nur für ältere Router Versionen canActivate: [AuthGuard] ist nur für die neuesten Versionen

@Routes([ 
    { path: '/', component: Home, canActivate: [AuthGuard]}, 
    { path: '/home', component: Home, canActivate: [AuthGuard]} 
]) 

Siehe https://angular.io/docs/ts/latest/guide/router.html, um weitere Informationen darüber, wie die neuen Router zu verwenden.

+0

Gibt es etwas ähnliches, das ich für diese Version des Routers verwenden kann? – AngularM

+0

Sie können 'CanActivate' für die Komponente implementieren, für die Sie sie verwenden möchten. Ich würde dringend empfehlen, zu aktualisieren. Dieser Router ist veraltet und wird in keiner Weise aktualisiert oder unterstützt. –

+0

Zu viel Arbeit, um dies jetzt zu tun – AngularM

Verwandte Themen