无法解决angular2

时间:2016-09-02 10:16:52

标签: angular

我有这个数组:

export const routes: RouterConfig = [
  { path: '', redirectTo: 'login', pathMatch: 'full' },
  { path: 'home', component: Home, data: {cssClass: "glyphicon-home" } },
  { path: 'a', component: A, canActivate: [AuthGuard], data : {type: UserType.A, cssClass: "glyphicon-leaf"} },
  { path: 'b', component: B, canActivate: [AuthGuard], data : {type : UserType.B, cssClass: "glyphicon-th-list"} },
  { path: 'login', component: Login, data: {cssClass: "glyphicon-asterisk" }}
];

使用AuthGuard。 AuthGuard看起来像这样:

@Injectable()
export class AuthGuard implements CanActivate {

  constructor(private authService: AuthService, private router: Router) { }

  canActivate() {
    if (this.authService.isLoggedIn) { return true; }
    this.router.navigate(['/login']);
    return false;
  }
}

因此,AuthGuard在其构造函数中具有AuthService。 AuthService是一个用@Injectable()修饰的类,它有一些方法,如login,logout和getRoutes()。我想从getRoutes中的帖子开始访问原始路径const,因为在这里我想访问路由并根据它们构建导航菜单。但是,一旦我尝试这样做,我就会收到错误' Uncaught无法解析' AuthGuard'(未定义,路由器)'的所有参数。我认为正在进行的是:我在路由中使用AuthGuard,我在AuthGuard中使用AuthService,现在我想在AuthService中使用路由,因此它是一个循环引用。

我想要做的是避免在多个地方写路线。我该如何解决这个问题?

0 个答案:

没有答案