css - 动态多列下拉菜单 - Angular2 和 Bootstrap

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

如何创建动态的多列下拉列表。我正在使用 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/

相关文章:

Css - 创建按钮时 Firefox 中的 1 px 差异

html - Twitter Bootstrap 悬停显示

javascript - 从 Webpack 1 迁移到 2 错误 - Angular (4.1.3) 应用程序

angular - 如何一个接一个地执行函数?

javascript - 为什么滚动后颜色不变? CSS/Javascript

html - css 在列之间添加间距

css - 用 Bootstrap 填充剩余高度

jquery - ASP.net Updatepanel 中的复选框和单选按钮 Bootstrap CSS

javascript - 如何根据数据动态创建 Bootstrap 下拉列表

angular - 如何在 TypeScript (Angular 2) 中制作多行注释