ngIf 未定义的 HTML 检查变量不包括值为 0 时的情况

Posted

技术标签:

【中文标题】ngIf 未定义的 HTML 检查变量不包括值为 0 时的情况【英文标题】:HTML check variable undefined with ngIf excluding case when value is 0 【发布时间】:2018-01-31 07:59:00 【问题描述】:

我正在使用 Angular 2,并想使用 htm *ngIf 条件检查变量值是否为 undefined

如果我使用<span *ngIf="!testvar">,它也涵盖了变量testvar = 0的情况,但我想排除它为0的情况。

以下工作,但这是 2 项检查:

<span *ngIf="!testvar && testvarl != 0"></span>

我想检查这个案例,只有条件可以缩短它并使其更干净。

有没有简单的方法来做到这一点?

【问题讨论】:

【参考方案1】:

你可以写:

*ngIf="testvar !== undefined"

【讨论】:

【参考方案2】:

如果你也担心 null

*ngIf="testvar !== undefined && testvar !== null"

【讨论】:

这个可以简写为*ngIf="testvar != undefined" 我相信这也可能是*ngIf="!!testvar"【参考方案3】:
<ng-template [ngIf]="!!foo">
  <p>Hello World</p>
</ng-template>

如果 foo 是未定义或 null 或空字符串,“Hello World”将被隐藏,如果 foo 是数字或布尔值是 true,或者字符串或数组或对象,它将显示 Hello World。

【讨论】:

如果 "foo" 是数字 0,这也是错误的。并且 [ngIf] 应该是 *ngIf【参考方案4】:

尽管这是一个老话题,但这是一个可以帮助他人的可能解决方案:

<span *ngIf="isValid(testvar)"></span>

isValid(str: String) 
    return typeof str !== 'undefined' && str != 0;

【讨论】:

以上是关于ngIf 未定义的 HTML 检查变量不包括值为 0 时的情况的主要内容,如果未能解决你的问题,请参考以下文章

无法读取未定义 angular2 ngif 的属性

*ngIf 检查数组为空,然后显示消息 [关闭]

作为 *ngIf 的结果更改布尔变量的值

如何检查 ReportControl 对象上是不是存在 Reportid 或不使用 *ngif?

访问 *ngIf 中的模板变量

Typescript + webpack:检查未在Node中定义但在浏览器中定义的变量