【发布时间】:2019-12-05 16:56:34
【问题描述】:
我正在定义一个我认为非常简单的函数,如果该值存在,它会提取从服务器返回的值。它无法编译,出现打字稿错误,说“值可能为空”。
由于这是在 *ngif 内部,我觉得应该足以说它不为空。但为了安全起见,我向对象添加了非空指令 (!)。但我仍然得到错误。我什至将它添加到对象的属性中,以防万一。仍然出现错误。
<div *ngIf="info">
<p>Info Id: {{info!.id!}}</p>
<p>Info databaseText: {{info!.databaseText!}}</p>
<p>Info localText: {{info!.localText!}}</p>
<p>Info computedText: {{info!.computedText!}}</p>
</div>
不确定接下来要尝试什么。任何想法,将不胜感激。我不想禁用 typescript null 检查。
【问题讨论】:
-
使用?相反,但问题的核心是你没有在你的组件中正确输入它...... IMO,打字稿中严格的空检查确实有问题/导致的问题比他们解决的问题更多
-
您确定错误是由模板的那个部分引起的吗?您是否尝试在末尾不使用
!(例如{{info!.localText}})?这就是Angular documentation中给出的用法。 -
@bryan60 很有趣 - 声明一个可能为 null 或可能是来自服务器的任意对象的变量的正确方法是什么?
-
我需要看看你是怎么做的,但你需要为它写一个界面并输入它。但是,如果没有严格的 null 检查,它会容易得多。
-
@bryan60 这解决了问题。该变量在另一个文件中被错误地声明。将类型更改为
any解决了它。你想提交它作为答案,我可以接受吗?
标签: angular typescript