【发布时间】:2018-07-25 01:28:01
【问题描述】:
我经常遇到这个问题。我有一个如图所示的元素
<div class="element-1" *ngIf="isShown"></div>
默认情况下,isShown = false;,通过点击一个元素,我正在制作isShown = true;
现在,在同一个点击回调函数中如果我尝试将element-1 设为
$('.element-1'),我没有得到那个元素,因为当isShown = true 出现时它可能不会立即出现在 DOM 中。
我可以使用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>
【问题讨论】:
-
通常不建议使用带有 Angular 的 jquery。告诉我们您在选择元素后要做什么。也许有一种非 jquery 方法可以做到这一点。
-
为什么要获取 DOM 元素? Angular 是使用数据绑定构建的。不推荐通过 JQuery 按 Id 或类获取 div
-
我想在设置标志为true后动态应用宽度。
-
我更新了我的问题。请通过它
标签: angular angular-ng-if