动态多列下拉列表 - Angular2和Bootstrap

时间:2017-01-18 10:06:43

标签: css twitter-bootstrap angular twitter-bootstrap-3

如何创建动态多列下拉列表。我正在使用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指令遍历艺术家列表并立即将其显示在单列中。但是想根据列表的大小在多列中显示它。

1 个答案:

答案 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