Сделал с нуля в новом проекте - заработало. Возможно я тогда что-то накосячил.
Про полный перезапуск не знал. Я правильно понимаю, что любое состояние, которое было в сервисах и т.п. будет сброшено?
Да, если вы его нигде не сохраняете и не подгружаете обратно. Поэтому необходимо об этом позаботиться. И не забыть почистить все подписки при ngOnDestroy везде, не только в компонентах, но и в сервисах тоже.
Вкратце, что происходит при hmr:
— клиент получает новый бандл
— копируется весь dom и делается невидимым
— останавливается старый AppModule, и дестроится полностью весь инжектор (все модули, компоненты, сервисы, и т.д.)
— новый dom делается видимым
— стартуется новый AppModule