《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取值

相关推荐
chushiyunen1 小时前
vue插件element ui,element plus,ElMessage消息框,ref,动态绑定语法
vue.js·ui·elementui
放下华子我只抽RuiKe51 小时前
FastAPI 全栈后端(五):后台任务与消息队列
前端·javascript·react.js·ai·前端框架·fastapi·ai编程
丷丩1 小时前
MapLibre GL JS第44课:生成并添加缺失图标
前端·javascript·gis·mapblibre gl js
GoogleDocs2 小时前
ProbeKit Lite 是什么?一款用于检测 AI 中转站真实度的工具
javascript·人工智障
li-xun2 小时前
2026年6月10日博客精选
javascript·人工智能·ui
Ajie'Blog2 小时前
2026年AI安全与治理:从幻觉到系统性欺骗的攻防之战
javascript·人工智能·安全·rpc·json·rag
智码看视界3 小时前
老梁聊全栈系列:Vue3核心与组合式API深度解析
javascript·vue.js·ecmascript
想吃火锅100511 小时前
【leetcode】405.数字转换为十六进制数js
开发语言·javascript·ecmascript
阿猫的故乡13 小时前
Vue过渡动画从入门到装X:淡入淡出、滑动、列表动画、第三方库全搞定
前端·javascript·vue.js