所以我有以下情况:
<span *ngIf="!someItem?.description==''">
条件:如果定义了someItem且描述不是空字符串。一般来说,我们可以说不等于某个X。
在开发环境中,当 someItem 是且未设置,以及描述为且不为空时。但是,在生产构建中,我遇到以下错误:
someItem
Operator '==' cannot be applied to types 'boolean' and '""
我应该如何编写这样的条件以使其在生产构建中保持null安全和有效?
这个 ! 运算符的优先级高于 == 所以这基本上是 (!someItem?.description) == '' 将布尔值与不允许的字符串进行比较。
!
==
(!someItem?.description) == ''
您可能想使用 someItem?.description != '' . 这将正常工作,即使 someItem 未定义,因为它将进行比较 undefined != '' 哪一个 是 允许。但是,这可能无法满足您的需要,因为 未定义!=“” .
someItem?.description != ''
undefined != ''
未定义!=“”
最终,您可能希望使用 *ngIf="!someItem?.description" 如果 someItem项目 未定义,没有 description 财产,或 描述 是任何包含空字符串的假值。
*ngIf="!someItem?.description"
someItem项目
description
描述