@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 (на самом деле они одинаковые должны быть вроде-бы), в этот момент получать высоту контента всей страницы и выполнять спец запрос на изменение размера контейнаре фрейма (приложение встраивается через фрейм в другое место и если надо изменить размер фрейма можно просто кинуть запрос из фрейма на родительский документ)
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
search
@search
Мой дедушка индиго
HostListener в этом вопросе не поможет, потому что изменение высоты body не порождает событие JS.

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

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

Войти через центр авторизации
Похожие вопросы
HTML Academy Санкт-Петербург
от 110 000 до 130 000 руб.
Atlas Delivery Москва
от 110 000 руб.
21 марта 2019, в 00:19
5000 руб./за проект
20 марта 2019, в 20:02
1000 руб./за проект