Angular9 NG-ZORRO 9 复选框组合最佳实践

背景

  • Angular 9 + NG-ZORRO 9
  • 需要一组复选框,支持:
    • 自定义布局(多列显示)
    • 获取选中值(直接拿 value 数组,不用遍历)
    • 弹窗关闭时一键清空

核心数据

用于显示多选框

typescript 复制代码
options = [
    { label: 'A', value: 1, checked: false },
    { label: 'B', value: 2, checked: false },
    { label: 'C', value: 4, checked: false },
    { label: 'D', value: 8, checked: false },
  ];

数据输出

typescript 复制代码
detectionStartChange(value: number[], popDetectionStart) {
	console.log(value);
}

关闭弹窗

关闭弹窗清空选中项

typescript 复制代码
closeModal() {
    this.options.forEach((item) => item.checked = false);
  }

模板文件HTML

使用 nz-checkbox-group

html 复制代码
<nz-checkbox-group style="width: 100%;" [(ngModel)]="options"
	(ngModelChange)="detectionStartChange($event, popDetectionStart)">
</nz-checkbox-group>

使用 nz-checkbox-wrapper

html 复制代码
<nz-checkbox-wrapper style="width: 100%;" (nzOnChange)="detectionStartChange($event, popDetectionStart)">
	<div nz-row>
		<div nz-col nzSpan="12" *ngFor="let data of options">
		<label nz-checkbox [nzChecked]="data.checked" 
			[nzValue]="data.value">{{data.label}}</label>
		</div>
	</div>
</nz-checkbox-wrapper>

技术总结

nz-checkbox-group和nz-checkbox-wrapper都能实现多选功能,但是核心差异是: nz-checkbox-group输出的数据事整个options,需要遍历options拿到checked为true的选项,并获取其value值,而且不支持nz-zorro的响应式布局; nz-checkbox-wrapper输出的数据直接就是1, 2类似的value数组,并且支持nz-zorro的响应式布局。

相关推荐
界面开发小八哥10 小时前
界面控件DevExtreme v26.1新版亮点——支持Angular 22
前端·javascript·angular.js·devexpress·ui开发·devextreme
巴勒个啦5 天前
Vue 3.6 Vapor Mode 实战:我把一个 Vue3 项目的渲染性能提升了 4 倍
前端·angular.js
shmily麻瓜小菜鸡8 天前
在 Angular 项目中实现国际化(i18n)和翻译 使用ngx-translate
前端·javascript·angular.js
starrysky81012 天前
一个 JSON 解析错误,搞垮了整个进程池?——requests JSONDecodeError + BrokenProcessPool 排障实录
angular.js
starrysky81013 天前
小模型反而爆显存?Qwen2.5-VL 3B vs 7B 的 vLLM 显存真相——多模态 Profiling 机制深度拆解
angular.js
starrysky81017 天前
THP 透明大页导致数据库延迟从 2ms 飙升到 2000ms——khugepaged 内存压缩风暴排查实录
angular.js
starrysky81020 天前
多Agent通信架构实战:从NATS消息总线到五大编排模式的生产落地——Agent通信协议篇
angular.js
starrysky81020 天前
RecursionError: maximum recursion depth exceeded —— 你的函数调用链,踩穿了 CPython 的安全气囊
angular.js
starrysky81021 天前
MemAvailable 还有 29GB,系统却报内存压力?——Ubuntu 24.04 CIFS 内核 Page Cache 泄漏排查实录
angular.js
starrysky81021 天前
KeyError: 'xxx' —— 字典里没这个键,但你的代码以为有
angular.js