【问题标题】:Alternative of document.getElementsByTagName('body') in angular 2/5/6角度 2/5/6 中 document.getElementsByTagName('body') 的替代方案
【发布时间】:2019-02-20 16:09:58
【问题描述】:

我想从另一个子组件中获取“body”元素。
如何从子组件中获取 body 元素?
因为我想将类附加并删除到正文窗体子组件。

【问题讨论】:

    标签: angular angular6 elementref


    【解决方案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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多