Угловой: два разных модуля или один модуль - PullRequest
0 голосов
/ 28 ноября 2018

Я недавно начал работать над Angular (Angular5).В моем приложении есть вкладки с именем Home, School, Office, и у меня есть два типа пользователей Admin и non-admin.Как только нажата вкладка Office, страница администратора будет перенаправлена ​​на страницу администратора, а пользователь, не являющийся администратором, будет перенаправлен на страницу, не являющуюся администратором.

Итак, для этого требования мне нужно сделать два разныхмодули?ИЛИ мне сделать один модуль и перенаправить на основе пользовательских типов?Пожалуйста, направьте меня со структурой проекта.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Модули не разделены ролями вашего приложения. Разделение модулей - это процесс разделения вашего кода без каких-либо сложностей, если в случае использования component, который необходимо использовать в нескольких местах, вы можете переместить этот компонент вмодуль shared и import этот модуль во все ваши субмодули - если вы хотите загрузить модуль Lazily, вы можете поработать над загрузкой модуля Lazily

В вашем случае - слово route дляВы - вы можете проверить, есть ли у пользователя admin или non-admin во время маршрутизации, чего можно достичь с помощью Resolver, который делает магию для вас - проверьте эту ссылку для дальнейших запросов

Попробуйте что-то вроде этого

Маршрутизатор

{
    path: 'pathName',
    component: ComponentName,
    resolve: { RolePermission: RolePermissionService },
}

RolePermissionService

@Injectable({
  providedIn: 'root'
})
export class RolePermissionService implements Resolve<object | string> {

  constructor(private router: Router) {
    }

  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | string> | Promise<boolean | string>  {
        return new Promise(resolve => {

             return resolve(true);

            // Your logic here - Call the service to check whether admin or non-admin
            // Bind the data in your route or you can navigate from here
        });
    }
}

Таким образом, возвращаемые данные будут привязанык объекту RolePermission в вашем маршруте, и, наконец, вы можете прочитать его в своем component

Компоненте

В вашем компоненте вы можете читать эти данные следующим образом

this._activatedRoute.snapshot.data["RolePermission"].ISSubmitSlotRequest;

Таким образом, это решит вашу проблему: вы можете сопоставить этот сервис со всеми нужными маршрутами и получить роль пользователя - я не против создания модуля, это будет лучший способ прочитать роли в маршрутизации - проверьте, чтоссылка для большей идеи - Счастливое кодирование:)

0 голосов
/ 28 ноября 2018

Да, вам нужно 2 разных модуля , так как они оба являются отдельной функцией и отложенной загрузкой их на родительском маршруте (например, AppRouting или другие) .Возможно, на вашем Admin есть функции, которых нет у Non-Admin , и они оба играют разные роли в вашем приложении.Таким образом, вы должны разделить их на основе их функции.

Функциональный модуль

  • создать несколько функциональных модулей для каждой независимой функции приложения

  • поможет вам разбить приложение на выделенные области

  • Храните код, относящийся к определенной функции или функции, отдельно от другого кода

https://angular.io/guide/feature-modules#feature-modules-vs-root-modules

В вашем случае ваши функциональные модули - это / admin и / non-admin (или любые термины, которые вы использовали в вашем каталоге) .Под ними находятся его компоненты, сервисы, маршрутизация и ngModule.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...