如何创建动态的多列下拉列表。我正在使用 angular2 并寻找类似这样的东西 http://alijafarian.com/bootstrap-multi-column-dropdown-menu/
但这里我们将列固定为 3,并将列表项硬编码。在我的例子中,我有一个动态列表,并希望在一列中显示 5 个元素。例如:如果列表包含 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 指令循环遍历艺术家列表并将其显示在单列中。但是想根据列表的大小以多列显示它。
最佳答案
您应该使用简单的 block 函数从数据中创建一个新数组:
public chunk(arr, size) {
var newArr = [];
for (var i=0; i<arr.length; i+=size) {
newArr.push(arr.slice(i, i+size));
}
return newArr;
}
然后像这样在你的 View 中做一些改变:
<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
关于css - 动态多列下拉菜单 - Angular2 和 Bootstrap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41716462/