У меня нет доступа к Edge для подтверждения, но есть несколько вещей, которые могут вас заинтересовать в тестировании здесь.
1) В вашем index.ts
есть следующий код:
import './inner-element.js';
import './outer-element.js';
Это означает, что внутренний элемент будет регистрироваться и обновляться до того, как внешний элемент будет зарегистрирован и обновлен, что означает, что его размер будет определен изначально, как если бы outer-element
былоdiv
, а затем впоследствии предоставляется стилевое оформление внутри outer-element
.Поменяйте местами импорт, чтобы предотвратить возникновение этого конкретного порядка гонки.
2) Вы измеряете в firstUpdated()
, что может технически произойти до того, как элемент попадет на страницу, то есть вы измеряетеunrendered element, который является элементом без размера.Ожидание, пока connectedCallback()
может гарантировать, что вы измеряете элемент "на странице".
3) Измерение элемента синхронно означает, что вы могли бы измерять до того, как все родительские / классифицированные основаныВыполнен код / etc, использование requestAnimationFrame()
в connectedCallback()
может помочь гарантировать, что вы не проводите измерения, пока вы не будете на 100% уверены, что элемент готов к измерению.
Попробуйте эту демонстрациюдля подтверждения: https://stackblitz.com/edit/measure?file=inner-element.js