Угловая маршрутизация к дочернему пути на основе роли

После успешного входа в систему я перенаправляюсь по следующему пути this.router.navigate(['/main/']) в зависимости от роли, полученной при входе в систему. Можно ли перенаправить на модули diff.

Пример: если роль - «Администратор», если я перенаправляю на ['/main'] в зависимости от роли, он перейдет в модуль администратора. Использование охранников

Структура проекта:

Модуль приложения

      ---Login Module

---Main Module

    ---Admin Module

    ---User Module

Главный файл маршрутизатора

        {
    path: 'main',
    component: MainComponent,
    children: [
      {
        path: 'admin',
        loadChildren: ()=>import('./admin/admin.module').then(({
          AdminModule
        })=>AdminModule),
        canActivate: [
          RoleGuard
        ],
        data: {
          roles: [
            'Admin'
          ]
        }
      },
      {
        path: 'user',
        loadChildren: ()=>import('./user/user.module').then(({
          UserModule
        })=>UserModule),
        canActivate: [
          RoleGuard
        ],
        data: {
          roles: [
            'User'
          ]
        }
      }
    ]
  }
]```

1 ответ

Вы можете это сделать с помощью Guard;

Создайте стражу для администратора

      export class AdminGuard implements CanActivate {

  constructor(private router: Router) { }

  canActivate() {
    const AdminTokenLogin = Math.random();
    if (AdminTokenLogin > 0.4) {
      this.router.navigate(['/admin/admin']);
      return true;
    } else {
      this.router.navigate(['/main']);
      return false;
    }
  }

}

В своих маршрутах вы можете использовать;

      { path: 'admin/admin', component: AdminComponent, canActivate: [AdminGuard] },
Другие вопросы по тегам