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

标签 angular production-environment

所以我有以下情况:

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

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

这适用于开发环境,当 someItem 设置或未设置时,以及当描述为空或不为空时。但是在生产版本中,我收到以下错误:

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

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

最佳答案

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

您可能想使用someItem?.description != ''。即使 someItem 未定义,这也会正常工作,因为它会比较允许的 undefined != ''。但是,这可能不会达到您想要的效果,因为 undefined != ''

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

关于angular - 如何在 Angular 标记中进行空/未定义的安全字符串比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48120788/

相关文章:

javascript - 如何在没有输入的情况下通过自定义控件以 Angular 形式触发 change()

javascript - Meteor.js 是否足够稳定以用于生产?

hadoop - 生产级配置单元和Sqoop配置

java - 如何临时创建一个没有任何文件位置的文本文件并在运行时在 Spring Boot 中作为响应发送?

php - 自动检测内部/外部开发环境

deployment - 金丝雀发布策略与蓝/绿发布策略

javascript - 如果对象返回 true,则设置 ngModel

Angular2 无法解析 RouterOutlet : (RouterOutletMap, ViewContainerRef,?,名称的所有参数)

angular - 无法绑定(bind)到 'ngForFor',因为它不是 'li' 的已知属性

迭代器上的 Angular 循环