我有这个json对象:
data = {
"name": "somename",
"items": [
{
"title": "Item 1",
"description": "Some description for item1"
},
{
"title": "Item 2",
""
},
{
"title": "Item 3",
"description": "Some description for item3"
}
]
}
使用rc2,* ngFor和仅显示具有描述的项目的推荐方法是什么?
Html模板:
<li *ngFor="let item of data.items" class="item">
<div>{{item.title}}</div>
<div>{{item.description}}</div>
</li>
答案 0 :(得分:18)
在重复元素上添加*ngIf
,并在length
属性上使用falsy条件进行检查,如下所示:
<ul>
<template ngFor let-item [ngForOf]="data.items">
<li class="item" *ngIf="item?.description?.length">
<div>{{item.title}}</div>
<div>{{item.description}}</div>
</li>
</template>
</ul>
您无法访问同一元素item
中*ngFor
的{{1}}变量,这就是您需要添加封装{*ngIf
标记的原因{ {1}}。
使用Plunker作为示例用法
答案 1 :(得分:0)
只显示有描述的项目?
简短的解决方案
<ul *ngFor="let item of data.items">
<li class="item" *ngIf="item.description">
<div>{{item.title}}</div>
<div>{{item.description}}</div>
</li>
</ul>
或使用 ng-container 而不是 template 以保持代码更清晰。
<ul>
<ng-container *ngFor="let item of data.items">
<li class="item" *ngIf="item.description">
<div>{{item.title}}</div>
<div>{{item.description}}</div>
</li>
</ng-container>
</ul>