当我单击元素时,我试图应用一个类,但是它在两个*ngFor
之内。
我考虑过使用多维数组,但是显然这不是正确的方法,因为它将类应用于多个元素。
我尝试过类似的事情:
<div *ngFor="let tabelaAnuncioContas of sortedData; let a = index">
<tr *ngFor="let anuncio of tabelaAnuncioContas.data[0].anuncio; let i = index">
<td><img [class.zoomImg]="zoomImg[a][i] == true" (click)="zoomImg[a][i]= !zoomImg[a][i]" [src]="anuncio.produto.foto_prin_1"></td>
</tr>
</div>
TS:
zoomImg:[][] = [[]];
当数组sortedData
中有多个元素时,返回:
无法读取未定义的属性“ 0”
当数组sortedData
中只有一个元素时,不会生成错误消息,但是当我单击该元素时,所有元素都将应用该类。
@编辑
答案 0 :(得分:0)
我相信您的错误来自<tr *ngFor="let anuncio of tabelaAnuncioContas.data[0].anuncio; let i = index">
这行,其中您已硬编码data[0]
。
tabelaAnuncioContas
是从可观察的事物中获取价值吗?如果是,则在初始状态下tabelaAnuncioContas
是未定义的,或者tabelaAnuncioContas.data
是未定义的,因此会出现此错误。
解决方案::尝试使其异步或保留另一项检查,例如tabelaAnuncioContas.data!=undefined && tabelaAnuncioContas.data.lenght > 0
答案 1 :(得分:0)
我有所不同,但是现在我有了想要的东西。
HTML:
<td><img (click)="aplicaZoomMiniatura($event)" [src]="anuncio.produto.foto_prin_1"></td>
TS:
aplicaZoomMiniatura(event){
let classList = event.target.classList;
event.preventDefault()
if(classList.contains("zoomImg")){
this.render.setElementClass(event.target, "zoomImg", false)
} else {
this.render.setElementClass(event.target,"zoomImg",true);
}
}