Как правильно реализовать роли (angular 2)?
Может кому пригодитсяrouting...
{path: '', component: Test1Component, canActivate: [AuthGuard], canActivateChild: [AuthGuard], 
    children: [
        {path: 'test2', component: Test2Component, data: {title: 'Тест 2', roles: ['admin', 'user']}},
        {path: 'test3', component: Test3Component, data: {title: 'Тест 3', roles: ['admin']}},
        {path: 'test4', component: Test4Component, data: {title: 'Тест 4'}},
    ]
},
...auth-guard...
// canActivate единожды проверяет авторизован или нет

canActivateChild(route: ActivatedRouteSnapshot): Promise<boolean>|boolean {
    let myRole = 'user'; // Получаем роль при инициализации приложения запросом на backend либо по своему усмотрению

    let roles = route.data['roles'] as Array<string>;
    if (!roles || roles.indexOf(myRole) != -1) return true;
   else {
        this.router.navigate(['']);
        return false;
    }
}
...
Теперь,  не задано roles в data, то доступ имеют все авторизованные (потому что стоит canActivate),
если roles в data заданы, то доступ будут иметь только те роли, которые перечислены, остальные будут перенаправляться на указанную страницу (в моем прмиере - на главную)
Реализую доступ на основе ui-роутера при заходе на страницу проверяется права доступа к ней. В качестве имплантации могу посоветовать https://github.com/Narzerus/angular-permission