@Malkolm163

Как заставить работать @HostListener('body:resize') на angular6?

У меня небольшое приложение на angular6 с роутингом.

в главном appComponent пытаюсь использовать @HostListener()
@HostListener('window:resize', ['$event'])
   onResize(event) {
     console.log("window:resize")
   }
   @HostListener('body:resize')
   onResize2(event) {
     console.log("body:resize")
   }
   @HostListener('resize', ['$event'])
   onResize3(event) {
     console.log("resize")
   }

это просто в разных вариантах уже указал.
но из всех вариантов, которые я пробовал сработал только 1:
@HostListener('window:resize', ['$event'])
   onResize(event) {
     console.log("window:resize")
   }

и то только когда я руками меняю ширину.

А задача такая:
у меня в компоненте есть некий шаблон и роутинг
при перемещении по страницам или при изменении контента на одной странице (будь то изменения которые произошли из-за того что я где-то чтото нажал или поступили данные с бекэнда) мне надо перехватывать события изменения размера body или html (на самом деле они одинаковые должны быть вроде-бы), в этот момент получать высоту контента всей страницы и выполнять спец запрос на изменение размера контейнаре фрейма (приложение встраивается через фрейм в другое место и если надо изменить размер фрейма можно просто кинуть запрос из фрейма на родительский документ)
  • Вопрос задан
  • 869 просмотров
Решения вопроса 1
search
@search
мама говорит что я особенный
HostListener в этом вопросе не поможет, потому что изменение высоты body не порождает событие JS.

Идеологически правильным ходом было бы сделать изменение высоты ифрейма проблемой пользователя приложения, а не проблемой самого приложения. В любом случае пользователи будут городить какие-то огороды на прослушивание событий от приложения. Вместо этого можно заюзать, например, вот такую либу https://github.com/davidjbradshaw/iframe-resizer . В этом случае гора по обнаружения изменения высоты тела страницы сваливается с плеч приложения на плечи компонента, который специально создан для таких ситуаций.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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