Задать вопрос
@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 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 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>


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

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

Похожие вопросы