我正在制作一个侧边菜单,它会显示一个项目列表,每个项目旁边都有一个复选框,当复选框被选中时 - 将启用V形图标以允许用户显示下拉列表检查项目。
我当前的问题是随时点击图标以展开我选中项目的下拉列表...它只会扩展列表中第一项的下拉列表。它似乎没有显示每个所选项目的下拉列表。
这是我的HTML代码:
<ul>
<li>
<div class="col-md-4">
<div class="checkbox" *ngFor="let item of list">
<div class="content-col">
<label>
<input type="checkbox" (click)="action(item, $event);" [checked]="item.checked">
<span class="text-body">{{item.title}}</span>
</label>
<button [disabled]="!item.checked" data-toggle="collapse" data-collapse-icon="ChevronDown" data-expand-icon="ChevronUp" aria-expanded="false" aria-controls="listCollapse" href="#listCollapse">
<i class="win-icon"></i>
</button>
</div>
<ul class="collapse" id="listCollapse">
<li routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
<a role="menuitem" [routerLink]="[...]">DD 1</a>
</li>
<li routerLinkActive="active">
<a [routerLink]="[...]" role="menuitem">DD 2</a>
</li>
</ul>
</div>
</div>
</li>
</ul>
&#13;
如何才能完成这项工作,以便在点击for循环中的展开图标时,我会为每个列表项显示折叠下拉列表?
对于视觉来说,这就是我的列表:
[x]项目1 ^
dd a
dd b
[x]项目2(下雪佛龙)
[x]项目3(向下雪佛龙)
点击V形图标记项目1,2或3 - 它只会扩展项目1的下拉列表。
答案 0 :(得分:1)
您可以执行以下操作。
<ul>
<li>
<div class="col-md-4">
<div class="checkbox" *ngFor="let item of list; let i = index">
<div class="content-col">
<label>
<input type="checkbox" (click)="updateItem(item, $event);" [checked]="item.checked">
<span class="text-body">{{item.title}}</span>
</label>
<a data-toggle="collapse" data-collapse-icon="ChevronDown" *ngIf="item.checked == true" data-expand-icon="fa fa-chevron-up" aria-expanded="false" href="#listCollapse{{i}}">
<button>
<i class="fa fa-plus"></i>
</button>
</a>
<a data-toggle="collapse" data-collapse-icon="ChevronDown" *ngIf="item.checked == false" data-expand-icon="fa fa-chevron-up" aria-expanded="false" href="null">
<button [disabled] ="!item.checked" >
<i class="fa fa-plus"></i>
</button>
</a>
</div>
<div class="collapse" id="listCollapse{{i}}">
<div routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
<a role="menuitem">DD 1</a>
</div>
<div routerLinkActive="active">
<a role="menuitem">DD 2</a>
</div>
</div>
</div>
</div>
</li>
</ul>
export class AppComponent {
list: any =
[{
'id': 1,
'title': 'first',
'checked': false
},
{
'id': 1,
'title': 'second',
'checked': false
}];
updateItem(item: any,evento: any) {
item.checked = !item.checked
}
}
答案 1 :(得分:0)
问题将与您正在使用的ID一起列出崩溃&#39;。因为所有使用ngFor生成的列表项都具有相同的id。因此,每当触发时,第一个具有id&#39; listCollapse&#39;将会公开。