Альтернатива document.getElementsByTagName ('body') в угловом 2/5/6 - PullRequest
0 голосов
/ 16 сентября 2018

Я хочу получить элемент 'body' из другого дочернего компонента.
Как я могу получить элемент body из дочернего компонента?
Как я хочу, чтобы добавить и удалить класс для тела формы дочернего компонента.

1 Ответ

0 голосов
/ 16 сентября 2018

Я могу предложить обходной путь, при котором вы можете пройти назад, пока не получите элемент 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)
}
...