如何创建动态多列下拉列表。我正在使用angular2并寻找类似http://alijafarian.com/bootstrap-multi-column-dropdown-menu/
的内容但是这里我们将列固定为3并且列表项硬编码。在我的情况下,我有一个动态列表,并希望在一列中显示5个项目。所以对于Eg:如果列表包含20个项目那么我们会有4列,每列有5个项目。我的代码如下所示
....
<li role="presentation" class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown"
href="#" role="button"
aria-haspopup="true" aria-expanded="false">
Artists
<span class="caret"></span></a>
<ul class="dropdown-menu ">
<li *ngFor="let artist of artists">
<a><input type="checkbox"> {{artist.name}} </a>
</li>
</ul>
</li>
.....
我正在使用ngFor指令遍历艺术家列表并立即将其显示在单列中。但是想根据列表的大小在多列中显示它。
答案 0 :(得分:1)
您应该使用简单的块函数从数据创建一个新数组:
public chunk(arr, size) {
var newArr = [];
for (var i=0; i<arr.length; i+=size) {
newArr.push(arr.slice(i, i+size));
}
return newArr;
}
并在您的视图中进行一些更改,如下所示:
<ul class="dropdown-menu multi-column columns-2">
<div class="row">
<div class="col-sm-6" *ngFor="let persons of chunk(persons, 3)">
<ul class="multi-column-dropdown">
<li *ngFor="let person of persons"><a href="#">{{person.name}}</a></li>
</ul>
</div>
</div>
</ul>
以下是一个示例:plunker