You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular HTML中带空值检查的ngIf表达式报错,如何修正?

修复Angular中*ngIf的空值访问报错问题

你的代码报错原因是:虽然通过可选链?.判断了listing.sales?.last30days?.units的存在性,但后续直接访问listing.sales.last30days.units时没有使用可选链,Angular的类型检查会认为sales或last30days可能为null/undefined,存在空值访问风险,因此抛出错误。

以下是几种正确的写法:

写法一:简化可选链判断

直接利用可选链结合大于0的判断,当可选链返回undefined时,undefined > 0会被解析为false,和你原本的逻辑一致:

*ngIf="listing.sales?.last30days?.units > 0"

写法二:使用*ngIf变量赋值(推荐)

这种方式更清晰,同时避免重复访问属性,Angular语言服务也不会报错:

<div *ngIf="listing.sales?.last30days?.units as units && units > 0">
  <!-- 你的内容 -->
</div>

这里先通过可选链安全获取units的值并赋值给变量units,再判断变量是否大于0,逻辑明确且类型安全。

不推荐的写法:非空断言

如果你能100%确保listing.sales和listing.sales.last30days永远不会为null/undefined,可以用非空断言!,但这种写法存在运行时风险,不建议在不确定的场景使用:

*ngIf="listing.sales!.last30days!.units > 0"

内容的提问来源于stack exchange,提问作者Omar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 00:27:14