В Angular можно реализовать функционал ролей пользователя с разным интерфейсом с помощью нескольких подходов. Давайте рассмотрим наиболее распространенные способы:
1. Использование условного рендеринга с помощью ngIf:
В этом подходе вы можете определить переменную, которая будет хранить информацию о роли пользователя. Затем вы можете использовать директиву ngIf для определения, какие элементы интерфейса должны быть отображены в зависимости от значения этой переменной. Например:
// component.ts isAdmin = false; // component.html <div *ngIf="isAdmin"> <!-- элементы интерфейса для администратора --> </div> <div *ngIf="!isAdmin"> <!-- элементы интерфейса для пользователя --> </div>
2. Использование условных классов с помощью ngClass:
В этом подходе вы можете использовать директиву ngClass для добавления классов к элементам интерфейса в зависимости от роли пользователя. Вы можете определить классы соответствующих стилей в файле CSS и применять их динамически. Например:
// component.ts isAdmin = false; // component.html <div [ngClass]="{'admin-interface': isAdmin, 'user-interface': !isAdmin}"> <!-- элементы интерфейса для администратора и пользователя --> </div>
/* styles.css */ .admin-interface { /* стили для администратора */ } .user-interface { /* стили для пользователя */ }
3. Использование маршрутов и гвардов:
Этот подход подразумевает настройку маршрутов в вашем приложении с помощью Angular Router, а затем использование гвардов для регулирования доступа к различным "роутам" в зависимости от роли пользователя. Например:
// admin-guard.ts canActivate(): boolean { if (currentUser.role === 'admin') { return true; } return false; } // app-routing.module.ts const routes: Routes = [ { path: 'admin', component: AdminComponent, canActivate: [AdminGuard] }, { path: 'user', component: UserComponent }, ];
При таком подходе, если текущий пользователь имеет роль "admin", он будет перенаправлен на компонент AdminComponent. В противном случае, если у пользователя роль "user", он будет перенаправлен на компонент UserComponent.
Выбор подхода зависит от ваших потребностей и требований приложения. Условный рендеринг и условные классы самые простые и наиболее подходящие для простых сценариев. Если вам нужно более сложное управление доступом и навигацией, использование маршрутов и гвардов может быть более подходящим вариантом.