Я не настолько продвинутый оратор как Александр, но я пожалуй тоже выдвину пару моментов как финальный бросок себя в уже открытую могилу:
Ну ваще я буду краток, и немного пройдусь по-кругу:
За кипиш:
1) То что в гуарде содержится логика отображения - не очень хорошо.
Не вижу разницы между: document.getElementById().appendChild()
И
LibName.openDialog()
2) подвязка гуарда на стороннюю библиотеку для юая заставить переписывать и логическую часть приложения (коим гуард и является). Приходится смешивать
3) монтирование компонента из гуарда заставляет иметь задекларированный компонент в скоупе, хотя для большинства гуардов это и не нужно.
+ иметь независимый код от наличия browsermodule/commonmodule для бизнеслогики, без инжектинга ненужных зависимостей в нее - меньше эффорта в будущем для миграций, меньше места для легаси-кода.
4) если стараться добиться максимальной индексации контента поисковыми роботами, то желательно чтобы все состояния приложения (в тч. Модалки) были доступны по урлу, а код который меняет индексируемый контент в гуарде путем отрисовки модального окна - не лучший выбор. Особенно, если речь заходит о SSR
5) шина сообщений доступная во всех контекстах приложения выглядит найс потому что можно отследить хронологию событий на своей стороне. (Не знаю как выразить точнее).
Минусы:
1) придется написать один дополнительный сервис и заинжектить его в корне приложения. Брр....
Да, возможно каждый пункт из этих содержит внутри себя уйму логических ошибок, и ваще кг/Ам.
Но опять же, дело вкуса. Я конечно ещё тот эксперт, мне кажется что
@drxwat, например, в этом вопросе более подкованный