代码之家  ›  专栏  ›  技术社区  ›  Antoniossss

如何在角度标记中进行空/未定义的安全字符串比较?

  •  2
  • Antoniossss  · 技术社区  · 7 年前

    所以我有以下情况:

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

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

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

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

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

    1 回复  |  直到 7 年前
        1
  •  3
  •   Explosion Pills    7 年前

    这个 ! 运算符的优先级高于 == 所以这基本上是 (!someItem?.description) == '' 将布尔值与不允许的字符串进行比较。

    您可能想使用 someItem?.description != '' . 这将正常工作,即使 someItem 未定义,因为它将进行比较 undefined != '' 哪一个 允许。但是,这可能无法满足您的需要,因为 未定义!=“” .

    最终,您可能希望使用 *ngIf="!someItem?.description" 如果 someItem项目 未定义,没有 description 财产,或 描述 是任何包含空字符串的假值。