В JS невозможно декларативно всё сделать, в конечном счёте у тебя где-то будет императивный код. Но его просто надо максимально декларативно абстрагировать.
Если у тебя есть директива autoFocus=true — её использование будет декларативно, но под капотом там всё равно будет императивный вызов nativeElement.focus(), в этом ничего плохого нет и этого не избежать.
С событиями максимально декларативно работать у тебя 2 варианта: 1) описывать состояние системы и в хостлистенерах его обновлять, передавая новое состояние декларативным абстракциям (ngIf, вместо императивного показать/убрать) 2) описывать то, что тебе надо цепочкой RxJS и выходить из неё только там, где оно нужно асинк пайпом
Между прочим, классифицировать JS как событийно-ориентированный язык - неверно, в самом языке ничего подобного нет. Даже эвент-лупа. Т.е. это никак не может быть ограничением языка.
Насколько практически это просто реализовать и особенно рефакторить? Не сталкивается с проблемой того, что в RxJS сложно создавать понятные и легко меняесые абстракции?
Надо учиться ориентироваться в RxJS. Для меня нет проблемы в понимании и изменении RxJS. Мы с другом как раз недавно пособирали разных кейсов с RxJS из нашей работы и сделали 20 задачек: https://github.com/AngularWave/rxjs-challenge Там разная сложность, к каждому решению поясняющая статья. Пока это всё на английском, на хабр тоже планируем выкатить после праздников, на русском.
Я тоже не особо понял, но уж не стал спорить ) для меня SSR, считай, из коробки, билды быстро пересобираются и лайтхаус на моё Ангуляр караоке ближе к сотне выдаёт, разве что фаербейс мог бы побыстрее отвечать.