【问题标题】:This condition will always return 'false' since the types 'number' and 'string' have no overlap ngIf此条件将始终返回 'false',因为类型 'number' 和 'string' 没有重叠 ngIf
【发布时间】:2020-04-30 22:09:24
【问题描述】:

我有一个很少有 ngIf 条件的 DIV。但是我最近添加了一个新条件,之后它触发了一个错误,提示 此条件将始终返回 'false',因为类型 'number' 和 'string' 没有重叠

<div class="row" *ngIf="epmo===true && isHistory===true && myChangeRequest.requestStatus==='0'">

我最初尝试了 myChangeRequest.requestStatus===0,但由于 requestStatus 是数字类型,所以我不知道它不起作用。然后我尝试了单引号的方式,然后工作但这个错误

【问题讨论】:

  • 变量epmomyChangeRequest.requestStatus是什么类型?如果您想使用“真实”值且不进行类型检查,请尝试将 myChangeRequest.requestStatus === 更改为仅 2 ==
  • 您的 myChangeRequest.requestStatus 类型是什么?你能在代码中分享你的 myChangeRequest 模型吗
  • 您的变量有哪些不同的数据类型?
  • 抱歉有点晚了..我想我在问题 requestStatus 是数字类型中提到了

标签: angular angular-ng-if


【解决方案1】:

根据您提供的错误消息,我们可以假设 myChangeRequest.requestStatus 的类型为 number。

所以下面的比较应该有效:

*ngIf="epmo===true && isHistory===true && myChangeRequest.requestStatus===0"

看到这个Stackblitz example

  • 您可以将AppComponent.requestStatus 更改为例如1,那么div content就会消失

如果这不起作用,那么您必须提供更多信息:

  • myChangeRequest.requestStatus 的数据类型是什么?
  • 在这种情况下您会遇到什么错误?

【讨论】:

  • 我的 requestStatus 是数字类型。但是当 === 0 时它不起作用。它仅在 ==='0' 时有效。但是这个错误
  • @SandeepThomas 以及究竟是什么不起作用 - 即您期望什么以及发生了什么?
  • 我希望在值为 0 时隐藏 div。但当我没有指定单引号时,情况并非如此。它使用单引号但显示错误
  • 那你必须调试它才能找出真正的原因。例如您可以计算组件中的条件或向模板添加一些调试信息。我改进了我的 Stackblitz 示例:请参阅 AppComponent.debugCondition 和模板中的附加输出
  • 我很抱歉地说它来自服务器作为字符串“0”
猜你喜欢
  • 2019-07-03
  • 2023-04-01
  • 2021-05-06
  • 2022-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 2020-12-11
相关资源
最近更新 更多