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的响应式布局。

相关推荐
鶴哥只手遮天1 天前
Angular 22 源码级深度解析-第 13 章 依赖注入(一):Injector 抽象、`R3Injector` 与 bloom filter
前端·开源·angular.js
鶴哥只手遮天2 天前
Angular 22 源码级深度解析-第 06 章 模板指令全解:`ɵɵelementStart`、`ɵɵproperty`、`ɵɵadvance` 与绑定指令
前端·开源·angular.js
鶴哥只手遮天3 天前
Angular 22 源码级深度解析-第 02 章 编译链路总览:从模板字符串到 `ɵɵ` 指令
前端·开源·angular.js
starrysky81012 天前
你的 Ollama 可能正被别人用:CVE-2024-37032 完整攻击链与 3 条自查命令
angular.js
starrysky8101 个月前
明明在赋值前读取,为什么还报 UnboundLocalError?——从 CPython 符号表拆解函数级作用域
angular.js
starrysky8101 个月前
只填了个模型地址,5 秒就被接管——Open WebUI 攻击链拆解与「被拒 CVE」的坑
angular.js
大雄很用心1 个月前
package.json 中的 dependencies 是否都会被下载?|Angular 回归笔记 02
angular.js
starrysky8101 个月前
同一个 submit(),两条报错——ThreadPoolExecutor 在解释器退出时的竞态(附 4 组可复现实验)
angular.js
starrysky8101 个月前
30 个 CPU 全在内核态,只回收了 32 个页——per-memcg 内存回收的 mmap_lock 活锁
angular.js
starrysky8102 个月前
一个 NameError 掩盖了真根因:IPython 补全在 Django shell 里二次崩溃——从 jedi 版本错位查到 CPython LOAD_GLOBAL
angular.js