How can I access the child elements (here: ) of
@ViewChild()
in Angular 2+ without explicit declaration?
In template.htm
You can use the nativeElement
property of the ElementRef
given by ViewChild
to get the corresponding HTML element. From there, standard DOM methods and properties give access to its children:
For example:
@ViewChild("parent") private parentRef: ElementRef<HTMLElement>;
public getChildren() {
const parentElement = this.parentRef.nativeElement;
const firstChild = parentElement.children[0];
const firstImage = parentElement.querySelector("img");
...
}
See this stackblitz for a demo.
In your case, when you need only one and first child.
this.parent.nativeElement.firstChild
HTML
<div #parent>
<span id="child">
</div>
TS
@ViewChild('parent',{static:false}) parentDiv:ElementRef
this.parentDiv.nativeElement.firstChild
You can check this out if you want do any operations in it renderer2
use ViewChildren
instead which gets all elements with same tag.
@ViewChildren('parent') parents: QueryList<any>;
To convert those elements to array:
const arr = this.parent.toArray();
Choose first element:
const el = arr[0]
Access child html of first element: const innerHtml = el.nativeElement.innerHtml;