Основной вопрос
Предположим, у вас есть элемент DOM e
, который отключен от тока document
, то есть
document.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_DISCONNECTED
равен true
.
Как подключиться к событию, которое срабатывает в данный момент (или на следующем тике, это не имеет значения), этот узел подключается, то есть
document.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_DISCONNECTED
начинает возвращать false
?
Более высокий контекст
У меня есть угловой компонент, чей ngAfterViewInit
будет вычислять некоторые значения с учетом текущего стиля элемента (фактические размеры, отступы, поля и т. Д.).
Но angular может звонить ngAfterViewInit
после того, как его потомки созданы, но не обязательно связаны с его родителем.Элемент, отключенный от документа, по существу не имеет стиля, поэтому каждое измерение - разумно - ноль.
Я хочу отложить это вычисление до тех пор, пока этот элемент окончательно не будет соединен со всем документом, не будут применены правила CSS, HTML /CSS перекомпонован и стиль элемента устанавливается.
Ошибка MutationObserver
Я пытался использовать MutationObserver следующим образом:
this._ngZone.runOutsideAngular(() => {
new MutationObserver(mutations => {
console.log('got mutations', mutations);
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node === this.element) {
console.log('GOT CONNECTED');
}
})
});
}).observe(document, { childList: true });
});
Даже первые «полученные мутации» не появились в консоли.Может быть, я что-то не такЯ новичок в этом MutationObserver
вещь.