angular - 将 ngFor 中的项目分成两个列表
问题描述
这是我的复选框列表代码:-
<div class="policy-group">
<p><strong>Interests</strong></p>
<div class="form-check" *ngFor="let interest of (objAccountSetting != null && objAccountSetting.BasketSettings != null && objAccountSetting.BasketSettings.Interests != null && objAccountSetting.BasketSettings.Interests.length > 0) ? objAccountSetting.BasketSettings.Interests : [];let i = index;">
<div class="row">
<div class="col-md-6"></div>
</div>
<label class="custom-chck">{{interest?.Name}}
<input type="checkbox" [ngModelOptions]="{standalone: true}" [value]="interest?.Id" id="{{interest?.Id}}" [(ngModel)]="objAccountSetting.BasketSettings.Interests[i].Checked" id="{{interest?.Id}}">
<span class="checkmark"></span>
</label>
<input type="hidden" name="hdnIntrestId" value="interest?.Id" [(ngModel)]="objAccountSetting.BasketSettings.Interests[i].Id">
</div>
</div>
在上面的代码中,我有一个 ngFor 正在呈现兴趣列表,我遇到的问题是数据库中有数百个兴趣,因此 ngFor 正在打印 100 个项目。我想以某种方式将复选框列表拆分为页面上并排的几个列表,以便用户不必滚动到页面末尾
解决方案
简单的方法是使用 flexbox 处理 css,它为内部元素提供水平布局以及控制布局的许多选项,例如:
html:
<div class="flex-container">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
CSS:
.flex-container {
display: flex;
flex-wrap: wrap;
}
例如,如果您想为每行设置一定数量的复选框,请添加此选项(将设置为每行 5 个):
.flex-container > div {
flex: 1, 0;
width:20%;
text-align:center;
}
StackBlitz 示例基于您的代码的缩减版本。
有关详细信息和配置选项,请参阅Mozilla - flexbox 的概念。
对于您的示例,在类的循环内添加一个额外的 div:
<div class="policy-group">
<p><strong>Interests</strong></p>
<div class="flex-container">
<div class="form-check" *ngFor="let interest of (objAccountSetting != null && objAccountSetting.BasketSettings != null && objAccountSetting.BasketSettings.Interests != null && objAccountSetting.BasketSettings.Interests.length > 0) ? objAccountSetting.BasketSettings.Interests : [];let i = index;">
<div class="row">
<div class="col-md-6"></div>
</div>
<label class="custom-chck">{{interest?.Name}}
<input type="checkbox" [ngModelOptions]="{standalone: true}" [value]="interest?.Id" id="{{interest?.Id}}" [(ngModel)]="objAccountSetting.BasketSettings.Interests[i].Checked" id="{{interest?.Id}}">
<span class="checkmark"></span>
</label>
<input type="hidden" name="hdnIntrestId" value="interest?.Id" [(ngModel)]="objAccountSetting.BasketSettings.Interests[i].Id">
</div>
</div>
</div>
推荐阅读
- javascript - 如何获取所有服务器成员 ID?不和谐.js
- visual-studio-2019 - 为什么我的自动化 Visual Studio 构建突然停止构建?
- angular - Ionic5:“离子构建”和“离子构建--prod”之间的区别
- php - yii2 kartik 多选与关系表错误“调用数组上的成员函数 isAttributeRequired()”
- node.js - 如何在 adonis 5 下载 pdf
- postgresql - 使用 pg_hint_plan 时相同查询的 Postgres 查询计划更改
- jersey - Embedded Jetty + 2 Jersey Servlet:无法同时加载
- bash - 使用 shell 脚本转换文件内容
- azure - 如何在 azure cli 上启用 az 安全评估
- reactjs - App.js react native RBAC登录系统问题