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;