【问题标题】:Operator '==' cannot be applied to types 'number' and 'string'运算符 '==' 不能应用于类型 'number' 和 'string'
【发布时间】:2017-09-15 05:56:12
【问题描述】:

我在使用 --aot 编译代码时遇到此错误。没有--aot 它会忽略这个错误。

这是我收到此错误的行

<h2 class="inquiry-title" *ngIf="(summaryData.Title != undefined || summaryData.Title != null)">
    {{summaryData.Title}}
</h2>

请告诉我我做错了什么?

【问题讨论】:

  • 您确定此代码会导致错误吗?尝试删除*ngIf

标签: angular typescript


【解决方案1】:

undefined 和 null 在 javascript 中都是 falsy,你只需要做:

<h2 class="inquiry-title" *ngIf="summaryData.Title">
    {{summaryData.Title}}
</h2>

【讨论】:

  • 这将检查undefinednull?
  • 是的,undefined, null, "", 0, ... 相当于javascript中的false
  • 谢谢,我试试这个
  • 我必须非常小心,因为使用--aot 编译需要超过 30 分钟。那是一种痛苦
  • @NikhilRadadiya 你的项目有多大?
【解决方案2】:

搜索了一段时间后才知道,当您将一种类型与另一种类型与AOT 进行比较时,它会给出错误,因为它是在构建时编译的。

所以我改变了变量类型并且它起作用了。我知道这是一个错误,但是在使用 AOT 编译代码之前您不会明白这一点,因为在开发中通常不使用 AOT。

例如: myVar1:数字; myVar2:string;

如果你想在组件 html 中进行比较,

 *ngIf="myVar1 == myVar2"
 *ngIf="myVar1 == '0'"

它会给Operator '==' cannot be applied to types 'number' and 'string'

【讨论】:

    【解决方案3】:

    用来声明你的变量 像 :- var actualVal:any = "";

    【讨论】:

    • 将此答案发布在评论部分,因为它不包含任何代码
    猜你喜欢
    • 2021-06-28
    • 2023-02-11
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多