Ich benutze Angular 2 mit Router 3.0.0-aplha.8.NoProviderError mit CanActivate in Angular 2
Ich versuche mit der CanActivate-Funktion zu überprüfen, ob ein Benutzer authentifiziert ist. Ich habe einen AuthGuard, der CanActivate implementiert, für den Moment gebe ich nur wahr zurück.
route.ts
import { Injectable } from '@angular/core'
import { provideRouter, RouterConfig, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router} from '@angular/router';
import { AuthGuard } from './auth-guard'
import { SecurityComponent } from './security/security.component';
import { AdminDashboardComponent } from './admin/admin.dashboard.component';
export const mainRoutes: RouterConfig = [
{ path: '', component: SecurityComponent, },
{ path: 'admin', component: AdminDashboardComponent, terminal: true, canActivate: [AuthGuard] }]
export const MAIN_ROUTER_PROVIDER = provideRouter(mainRoutes);
Auth-guard.ts
import { Injectable } from '@angular/core';
import {
CanActivate,
Router,
ActivatedRouteSnapshot,
RouterStateSnapshot
} from '@angular/router';
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private router: Router) {}
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot){
return true;
}
}
Wenn ich versuche, "/ admin" (AdminDashboardComponent) zuzugreifen, erhalte ich diese Fehlermeldung:
Ich habe keine Ahnung was passiert. Jemand hat eine Idee?
Dank Iván
Thank you !! Ich war wirklich festgefahren. Was ist der Unterschied zwischen Ihrer Antwort und der Antwort von @ ed-morales? Können Sie mir sagen, was ist die beste Praxis? Danke nochmal! – IvanMoreno
Er hat eine weitere Ebene der Abstraktion sonst ist es das gleiche. –