Angular2条件路由器和注入当前路由器实例

时间:2016-03-10 10:16:37

标签: angular components angular-routing

我有这个子组件(和路由器插座)为我工作okey-dokey。

但是我希望着陆页以用户的角色为条件。 在这种特殊情况下,它是一个用户组件,普通用户应该看到他们的个人页面,管理员应该看到所有用户的列表。

我似乎无法设置条件着陆页,所以现在我制作了一个组件:

@Component({
  selector: 'user-component',
  template: '<router-outlet name="user"></router-outlet>',
  directives: [MdButton, AuthRouterOutlet],
})
@RouteConfig([
  { path: '/detail/',     component: UserDetail,    name: 'Detail',       data: {role: UserRole.USER } },
  { path: '/overview',    component: UserOverview,  name: 'Overview',     data: {role: UserRole.USER} },
  { path: '/detail/:id',  component: UserDetail,    name: 'AdminDetail',  data: {role: UserRole.ADMIN } },
  { path: '/add',         component: UserForm,      name: 'Add',          data: {role: UserRole.ADMIN } },
  { path: '/edit/:id',    component: UserForm,      name: 'Edit',         data: {role: UserRole.ADMIN} },
  { path: '/landing',     component: Landing,       name: 'Landing',      data: {role: null}, useAsDefault: true }
])
export class UserComponent {
  constructor() {}
}

@Component({selector: 'landing-none', template: '<div></div>'})
export class Landing {
  constructor(private sessionService: SessionService, router: Router) {
    if (sessionService.isAdmin()) {
      router.navigate(['Overview']);
    } else if (sessionService.isAuthenticated()) {
      router.navigate(['Detail']);
    } else {
      router.navigateByUrl('');
    }
  }
}

数据属性正在自定义AuthRouterAutlet中使用,它正在对着sessionService进行检查,就像在Landing组件中一样。

在这种情况下,我不能注入路由器属性,它一直抱怨路由不正确,是的,我没有定义任何,因为我想从我的UserComponent提供。

有人对此案有任何想法吗?我在做些傻事吗?

0 个答案:

没有答案