如何在 angular 标记中进行 null/undefined 安全字符串比较?

How to make null/undefined safe string comparision in angular markup?

所以我有以下条件:

<span *ngIf="!someItem?.description==''">

条件:如果定义了 someItem 并且 description 不是空字符串。一般来说,我们可以说不等于某个X。

这在开发环境中有效,当 someItem 设置和未设置时,以及当描述为空和不为空时。但是在生产构建中,我收到以下错误:

Operator '==' cannot be applied to types 'boolean' and '""

我应该如何编写这样的条件以使其在生产构建中保持空安全和有效?

! 运算符优先于 ==,因此这本质上是 (!someItem?.description) == '',它将布尔值与不允许的字符串进行比较。

您可能想使用 someItem?.description != ''。即使 someItem 未定义,这也能正常工作,因为它会比较 undefined != '',而 允许的。但是,这可能无法满足您的需求,因为 undefined != ''.

最终你可能想要使用 *ngIf="!someItem?.description" 如果 someItem 未定义,没有 description 属性,或者 description 是任何虚假值,包括空字符串。