Что вы хотите, высота элемента после Угловой обработал жизненный цикл событий, составили HTML и впрыскивают его на странице, а браузер закончил рендеринг, что HTML.
Вам нужна высота только тогда, когда она стабильна, а не раньше. Проблема в том, что все, что делается после того, как Angular отказывается от поворота Javascript VM, и нет события «обработанное завершение рендеринга» или «вычисленное макет».
Вам необходимо дать браузеру возможность рассчитать высоту и применить ее. Например, звоните setTimeout
. Это даст браузеру возможность рассчитать высоту.
Возможно, будет работать интервал в 0 мс. Это связано с тем, что вызовы offsetHeight запускают повторный расчет макета (см. here).
Это общая проблема и не является специфичной для конкретной инфраструктуры, ее способ работы браузеров. В общем, лучше постараться максимально избегать такой логики (подождать, пока высота не станет стабильной, чтобы сделать X), она, как правило, создает проблемы для исправления ошибок.
Может быть связан с http://stackoverflow.com/a/294273/217408 - см. Первый комментарий или попробуйте 'getBoundingClientRect(). Height' –
@ GünterZöchbauer getBoundingClientRect(). Height также возвращает 0. Так как комментарий, я должен использовать метод settimeout? но есть ли у углов какие-либо функции, которые могут получить высоту после готовности элемента? –