《Angular 中优雅地处理枚举值:Map + *ngIf as 替代多次 *ngIf》

首先看看多次*ngif:

Map数据

typescript 复制代码
export const stautsMap: {[key: number]: string} = {
  1: '是',
  0: '否',
  2: '未知',
};

Html页面需要多次*ngif判断多行结果

html 复制代码
<nz-tag *ngif="data?.realFiling == 1" nzColor="blue">{{statusMap[data?.realFiling]}}</nz-tag>
<nz-tag *ngif="data?.realFiling == 0" nzColor="red">{{statusMap[data?.realFiling]}}</nz-tag>
<nz-tag *ngif="data?.realFiling == 2">{{statusMap[data?.realFiling]}}</nz-tag>

优化之后:

Map数据

typescript 复制代码
export const statusMap: {[key: number]: any} = {
  1: {value: '是', color: 'blue'},
  0: {value: '否', color: 'red'},
  2: {value: '未知', color: null},
};

Html页面

html 复制代码
<ng-container *ngIf="statusMap[data?.realFiling] as realFiling">
	<nz-tag [nzColor]="realFiling?.color">{{realFiling?.value}}</nz-tag>
</ng-container>

关键点:

*ngIf as 的作用:判断 + 重命名

ng-container 不生成多余 DOM(对比 Vue 的 )

Map数据可以定义更多的内容,例如:

typescript 复制代码
statusMap = {
  1: { value: '是', color: 'blue', icon: 'check-circle', bgColor: '#e6f7ff' }
};

最终目的:

节省页面多行*ngif判断代码

*ngif as可以避免多次statusMapdata?.realFiling取值

相关推荐
xiaominlaopodaren36 分钟前
three.js地图数学基础(八):浮点精度
javascript·gis·three.js
SendTomo41 分钟前
跨设备文件互传新方案
javascript·网络·webrtc·html5·p2p
__zRainy__1 小时前
Node系列 · Node基础:全局变量与全局对象
开发语言·前端·javascript
sunly_1 小时前
TypeScript总结:15、类型速查
前端·javascript·typescript
Brown.alexis1 小时前
es6知识点3-自备使用
前端·javascript·es6
breeze jiang2 小时前
Next.js App Router 父子组件 RSC 拆分实战:从 Redis Hash 到客户端交互的最小化边界
javascript·redis·哈希算法
丫头,冲鸭!!!2 小时前
记账网站-post功能
javascript·个人开发
鬼手点金2 小时前
Scrapy + Playwright 完整示例(JS 动态渲染网页)
开发语言·javascript·爬虫·python·scrapy·html·json
逝水无殇2 小时前
HTML 文本格式化详解:掌握 <strong>、<em>、<mark>、<del> 等常用标签
前端·javascript·html
光影少年3 小时前
react离线缓存、图片缓存方案
开发语言·前端·javascript·react native·react.js·缓存·前端框架