Ваш div будет визуализирован и видим после запуска обнаружения изменений.При обнаружении изменения весь жизненный цикл запускается снова.
Если вы хотите что-то запустить, вам нужно подключить одно из событий жизненного цикла.Я предлагаю AfterViewInit
.
Теперь, когда вы знаете, как, давайте посмотрим, что вы должны делать.
В вашем случае вам следует создать div с ссылками на шаблоны.Это позволит вам иметь ссылку на элемент и позволит вам проверить, какой div показан или скрыт.
Вот блик стека , который показывает вам, как он работает, и вот код:
import { Component, ViewChildren, QueryList, ElementRef } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<div *ngFor="let item of [0, 1, 2, 3, 4, 5]; let i = index">
<span *ngIf="i === show" #shownDiv [id]="'div-' + i">{{ item }}</span>
</div>
`
})
export class AppComponent {
name = 'Angular 6';
show = 0;
@ViewChildren('shownDiv') divs: QueryList<ElementRef>;
ngOnInit() {
setInterval(() => {
this.show++;
if (this.show > 5) {
this.show = 0;
}
}, 1000);
}
ngAfterViewChecked() {
let shown = this.divs.find(div => !!div);
console.log('DIV shown is ' + (shown.nativeElement as HTMLSpanElement).id);
// Now that you know which div is shown, you can run whatever piece of code you want
}
}