Не удается разрешить все параметры для маршрутизатора CanActivate
Я пытаюсь реализовать защиту авторизации https://angular.io/docs/ts/latest/guide/router.html
но я получаю ошибку DI, я действительно не знаю, почему я ввожу UserService
в моем модуле.
мой RouteGuard
объявлен в глобальном модуле, и мой UserService
тоже
@NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA],
imports: [
TranslateModule
],
exports: [
LoadingComponent,
],
declarations: [
LoadingComponent,
],
entryComponents: [],
providers: [UserService,RouteGuard]
})
export class GlobalModule { }
Ошибка:
Uncaught SyntaxError {__zone_symbol__error: Error: Can't resolve all parameters for RouteGuard: ([object Object], ?).
at SyntaxError.ZoneAwa…, _nativeError: ZoneAwareError}
Код
import { ParentClass } from 'components';
import { Injectable } from '@angular/core';
import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { UserService } from '../../modules/user/user.service';
import { User } from 'models';
@Injectable()
export class RouteGuard extends ParentClass implements CanActivate
{
constructor(
private router: Router,
private userService: UserService
)
{
super();
}
public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean>
{
debugger;
return this.userService.getUser(this.subId()).toPromise().then(
(data) =>
{
this.setLoggedUser(data);
if (!this.isAdministrator())
{
this.router.navigate(['']);
return false;
}
return true;
}).catch((err) => { this.error(err); });
}
}