@Malkolm163

Как правильно расширять функционал модуля в Angular7?

Суть вопроса таково:

Есть приложение (или точнее еще будет) (global.module.ts), в котором планируется несколько основных модулей (app1.module.ts, app2.module.ts, .....) и еще кучка вспомогательных (service1.module.ts, service2.module.ts, ....).

На примере одного основного - модуль представляет собой отдельное приложение (salary.module.ts) которое встроится в общий интерфейс (global.module.s) и в нем можно будет настроить список сотрудников, кто где работает, должности, ставки и т.д, что позволит во взаимодействии с бекэндом формировать отчет по зарплате и штрафам. Приложение нормально уживается с "кучей" пользователей, каждый со своими настройками и отчетами. Теперь я хочу расширить функционал и добавить возможность экспорта. Штатная возможность этого-же модуля - экспорт в Excel, а опциональная (например она может быть доступна только некоторым из пользователей) - это интеграция с google drive и сохранение отчета в определенную папку там. И опциональная возможность должна быть отдельным модулем (google.service.module.ts).

просто взять и импортировать google.service.module.ts в salary.module.ts не правильно же ведь он далеко не всем доступен? а если не так, то как?

И вторая часть того же вопроса: хорошо, как то мы его импортировали и только для тех кому он доступен, а дальше как? надо же добавить и сам функционал в сами страницы на которых производится работа. Я пока только придумал такой вариант: кнопка экспорта представляет собой выпадающий список в котором будут excel, drive и что то еще в будущем, этот список формируется из переменной в компоненте, а переменная в свою очередь формируется при onInit и "если видит наличие модуля" google.service.module.ts получает из некоего сервиса в нем значения - текст кнопки и обработчик.

Может где то я не так мыслю и есть способы проще чем я тут напридумывал?
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
Qairat
@Qairat
frontend developer, angular 2+
Думаю предоставление доступа можно сделать на уровне базы.
Например, даете пользователям роли.
У ролей будет разрешении на excell, google drive и т.д.
Далее с апишки будете возвращать для конкретного пользователя типа такого json-а:
{
  roleId: 1,
  roleName: 'Administrator',
  permissionToButton: [ 'excell', 'google drive']
}


Далее в шаблоне будете использовать этот объект чтобы показать эти кнопки которые приходит с базы.

<div class="buttons">
   <div class="button" *ngFor="let btn of obj.permissions" (click)="clickToBtn(btn)">
     {{btn}}
   </div>
</div>


И в конечном результате, будете полностью контролировать доступы через базу, даже можете отдельный интерфейс замутить для этого.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы