如果我的数组没有某些值或html中未定义某些值,我想这样做,只是不要尝试从数组中获取它。
空数组:[{0:未定义}]
完整数组:
[
{0: "Name"},
{1: "img.src"},
{2: name: string, family: string, age: number}
]
0:“名称”,1:“ img.src” 2 {名称:字符串,族:字符串;年龄:数字}
我的尝试无效:
<div *ngFor="let fam of familyArray" class="grid-item">
<button ion-button>
<img *ngIf="fam[1] != undefined && fam[1] != null " class="selectImg" src="{{fam[1]}}" alt="">
</button>
<span *ngIf="fam[2].name != undefined && family[2].age != undefined && family[2].age != null && family[2].name != null " class="image-text">{{fam[2].name}}, {{family[2].age}}m.</span>
<p *ngIf="fam[2].family != undefined && fam[2].family != null " class="family-status">{{fam[2].family}}</p>
</div>
我总是会收到此错误:
TypeError:无法读取未定义的属性“ 1”
或
TypeError:无法读取未定义的属性“名称”
答案 0 :(得分:3)
您不需要对undefined和null进行检查,它会自动检查undefined和null,您只需指定如下所示:
<div *ngFor="let fam of familyArray" class="grid-item" >
<button *ngIf="fam[0]" ion-button>
<img *ngIf="fam[1]" class="selectImg" src="{{fam[1]}}" alt="">
</button>
<span *ngIf="fam[2] && fam[2].name && family[2].age" class="image-text">{{fam[2].name}}, {{family[2].age}}m.</span>
<p *ngIf="fam[2].family" class="family-status">{{fam[2].family}}</p>
</div>
您接收到的对象数组实际上是错误的格式,所有对象都应为相同的类型,但是需要遵循一些标准约定。
答案 1 :(得分:1)
<div *ngFor="let fam of familyArray" class="grid-item">
<button ion-button>
<img *ngIf="fam['1'] != undefined && fam['1'] != null " class="selectImg" src="{{fam['1']}}" alt="">
</button>
<span *ngIf="fam['2'].name != undefined && family['2'].age != undefined && family['2'].age != null && family['2'].name != null " class="image-text">{{fam['2'].name}}, {{family['2'].age}}m.</span>
<p *ngIf="fam['2'].family != undefined && fam['2'].family != null " class="family-status">{{fam['2'].family}}</p>
</div>
上面的代码3次,因为数组中有3个对象。
fam的首次值为{0: Name},
第二次{1: img.src},
第三次{2: name: Example, family: example, age:15}
没有这样的对象fam [1] 我希望我已经解释清楚了。
答案 2 :(得分:0)
通过以下操作解决了该问题:
HTML(在按钮上添加了ngIf ):
Map<String, Boolean> library= new HashMap<>();
library.put("Book1",true);
library.put("Book2",true);
library.put("Book3",false);
library.forEach((key, value) -> {
if(value){
System.out.println("Book = " + value);
}
});
并确保我的数组为空,而不是0:如果不存在,则为未定义。
答案 3 :(得分:0)
您已经添加了针对undefined和null的其他检查,并在几个地方错过了检查。
这是您的示例的工作副本- https://stackblitz.com/edit/angular-e8zjsq