在 angular 中替代 document.getElementsByTagName('body') 2/5/6
Alternative of document.getElementsByTagName('body') in angular 2/5/6
我想从另一个子组件中获取 'body' 元素。
如何从子组件中获取 body 元素?
因为我想将 class 添加和删除到 body 形式的子组件。
我可以建议一个解决方法,您可以在其中遍历直到获得 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)
}
我想从另一个子组件中获取 'body' 元素。
如何从子组件中获取 body 元素?
因为我想将 class 添加和删除到 body 形式的子组件。
我可以建议一个解决方法,您可以在其中遍历直到获得 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)
}