Angular 2+: Get child element of @ViewChild()
Solution 1:
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:
- element.children
- element.querySelector
- element.querySelectorAll
- etc.
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.
Solution 2:
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;