Я пишу свою собственную логику всплывающей подсказки, которая отлично работает, за исключением одной раздражающей ошибки.
При нажатии на элемент привязки я читаю идентификатор элемента, извлекаю некоторый текст из локального массива и показываю этот текст во всплывающей подсказке. В зависимости от длины текста высота подсказок будет меняться.
После этого я выравниваю подсказку по элементу, на который щелкнули, используя getBoundingClientRect()
в контейнере всплывающей подсказки и устанавливая значение 'top' соответственно с setStyle()
.
К сожалению, вычисленная высота неверна, когда длина текста всплывающей подсказки изменяется при getBoundingClientRect()
, по-видимому, работает до того, как высчитывается высота нового контейнера.
Есть ли способ дождаться обновления пользовательского интерфейса, прежде чем продолжить с позиционированием всплывающей подсказки? Я пытался использовать setTimeout()
, чтобы дождаться обновления, но это очень наглядно и, конечно, не очень приятно смотреть.
setTimeout(() => {
this.ngZone.run(() => {
this.updateTooltipPosition();
});
}, 200);