Я часто сталкиваюсь с этой проблемой. У меня есть элемент, как показано
<div class="element-1" *ngIf="isShown"></div>
по умолчанию isShown = false;
и, щелкнув элемент, я делаю isShown = true;
Теперь в той же функции обратного вызова клика. Если я попытаюсь получить element-1
как
$('.element-1')
, я не получаю этот элемент, потому что он может отсутствовать в DOM сразу после того, как isShown = true
.
Я могу получить то же самое, используя ngAfterContentChecked
. Но ngAfterContentChecked
звонил много раз.
Итак, как я могу получить элемент, не используя ngAfterContentChecked
?
Редактировать
Это мой элемент
<app-card-kpi-inline-overlay #kpisOverlay class="child-component all-kpis-overlay-wrap {{selectedView}}" [style.left.px]="kpiLeft" *ngIf="data['openKpiDetails']==true" [cardData]="data"></app-card-kpi-inline-overlay>
Это мой код метода ts
@ViewChild('kpisOverlay') kpisOverlay: ElementRef;
showKpiSection(i, event, card) {
card['openKpiDetails'] = !card['openKpiDetails'];
event.stopPropagation();
if (card['openKpiDetails']) {
setTimeout(() => {
const el: HTMLElement = this.kpisOverlay.nativeElement;
console.log(el); // always showing undefined
}, 0);
}
}
Я пытаюсь переключить флаг. Но консоль всегда печатает undefined
.
Ниже мой элемент переключения
<div (click)="showKpiSection(i, $event, data)">Get element</div>