Получить свойство элемента DOM угловым 2 способом

#javascript #angular

#javascript #угловой

Вопрос:

Мне нужно получить ширину элемента DOM в пикселях.

Способ jQuery…

 var myWidth = $('.labels').width();
  

Похоже, мне нужно получить ElementRef изнутри @Component или Service и получить доступ к width свойству.

В нем также говорится, что, помимо соображений безопасности, он может связывать приложение и слои рендеринга, что предотвращает дальнейшее развертывание веб-работнику.

Итак, каков наилучший способ получить доступ к этой ширине div? Я работаю с изображением, которое заполняет его div по горизонтали. Я накладываю некоторые элементы и произвожу вычисление myHeight = aspectRatio * myWidth;

Во всех связанных вопросах, которые я вижу, упоминается, как это сделать, пока Angular2 все еще находился на стадии кандидата на выпуск. В стабильной версии (месяц и 4 дня на сегодняшний день) так много изменений в API, что я чувствую, что какой-то #deprecated тег был бы полезен.

Комментарии:

1. Пожалуйста, убедитесь, что вы просмотрели все соответствующие свойства CSS, такие как object-fit . Велика вероятность, что они могут решить вашу проблему и избавить вас от необходимости выполнять вычисления вручную.

Ответ №1:

Сам Angular не предоставляет ничего для чтения из DOM.
Если вы хотите читать из DOM, вам нужно использовать ElementRef .
Использование ElementRef гораздо меньше беспокоит безопасность, чем, например, использование jQuery.
Правильно, что вы не позволяете этому приложению правильно работать с рендерингом на стороне сервера или веб-разработчиками, если вы это сделаете.