我有这个子组件(和路由器插座)为我工作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提供。
有人对此案有任何想法吗?我在做些傻事吗?