Альтернатива document.getElementsByTagName('body') в угловом 2/5/6
Я хочу получить элемент 'body' из другого дочернего компонента.
Как я могу получить элемент body из дочернего компонента?
Как я хочу добавить и удалить класс для тела формы дочернего компонента.
1 ответ
Решение
Я могу предложить обходной путь, где вы можете пройти назад, пока не получите body
элемент. И вы могли бы использовать Renderer2
так что код может работать без проблем с рендерингом на стороне сервера.
getParentNode (node) {
//make sure you inject Render2 inside constructor.
return this.renderer.parentNode(node);
}
getBodyElement (element) {
let currentElement = element;
// below can be optimised to have single `getParentNode` method call.
while(this.getParentNode(currentElement)&& this.getParentNode(currentElement).nodeName != 'HTML'){
currentElement = this.getParentNode(currentElement)
}
return currentElement
}
ngOnit() {
let bodyElement = this.getBodyElement(this.elementRef.nativeElement)
}