Angular Can';t解析路由器CanActivate的所有参数

Angular Can';t解析路由器CanActivate的所有参数,angular,angular2-guards,Angular,Angular2 Guards,我正在尝试实现授权保护 但是我得到了一个DI错误,我真的不知道为什么我要在我的模块中注入我的UserService MyRouteGuard在全局模块中声明,MyUserService也声明 @NgModule({ schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [ TranslateModule ], exports: [ LoadingComponent, ], declarations: [

我正在尝试实现授权保护

但是我得到了一个DI错误,我真的不知道为什么我要在我的模块中注入我的
UserService

My
RouteGuard
在全局模块中声明,My
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}
代码

从“组件”导入{ParentClass};
从“@angular/core”导入{Injectable};
从'@angular/Router'导入{CanActivate,Router,ActivatedRouteSnapshot,RouterStateSnashot};
从“../../modules/user/user.service”导入{UserService};
从“模型”导入{User};
@可注射()
导出类RouteGuard扩展父类实现CanActivate
{
建造师(
专用路由器:路由器,
私有用户服务:用户服务
)
{
超级();
}
public canActivate(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):承诺
{
调试器;
返回此.userService.getUser(this.subId()).toPromise()。然后(
(数据)=>
{
此.setLoggedUser(数据);
如果(!this.isAdministrator())
{
这个.router.navigate(['']);
返回false;
}
返回true;
}).catch((err)=>{this.error(err);});
}
}

ok我通过角度注入器this.userService=this.Injector.get(userService)注入它;
UserService
看起来像什么?它有
@Injectable()
装饰器吗?它的构造函数参数是什么样子的?如果从
RouteGuard
中的参数列表中删除
userService
,是否会出现错误?
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); });

  }
}