Вы можете использовать @ViewChildren
, который очень похож, но также работает с элементами, которые еще не присутствовали до хука жизненного цикла AfterViewInit
.Кроме того, он упаковывает ваши элементы в QueryList .
QueryList
имеет свойство changes
, которое можно наблюдать, на которое можно подписаться.Реализация может выглядеть примерно так:
export class SomeComponent implements AfterViewInit {
@ViewChildren(ChildComponent) children: QueryList<ChildComponent>;
ngAfterViewInit(): void {
this.children.changes.subscribe(children => {
children.forEach( (child: ChildComponent) => {
child.somePublicMethod();
});
});
}
}