Если вы ссылаетесь на элементы HTML с помощью @ViewChildren
, вы можете подписаться на событие QueryList.changes
, чтобы получать уведомления о появлении элементов в DOM.
В шаблоне установите ссылочная переменная шаблона для элементов элемента:
<div id="wrapper">
<ng-container *ngFor="let item of list">
<div #itemElement [id]="item.id">{{item.content}}</div>
</ng-container>
</div>
В коде используйте это имя переменной для ссылки на элементы с ViewChildren
:
@ViewChildren("itemElement") private itemElements: QueryList<ElementRef>;
ngAfterViewInit() {
this.itemElements.changes.subscribe(() => {
console.log("Item elements are now in the DOM!", this.itemElements.length);
const htmlElement = document.getElementById(this.selectedItemId);
...
});
}
См. это стекаблиц для демонстрации. Обратите внимание, что ng-container
не требуется, если он содержит только один элемент div
. Вы можете применить директиву *ngFor
непосредственно к этому элементу.