Javascript 无法读取属性';MyProperty';未定义的

Javascript 无法读取属性';MyProperty';未定义的,javascript,json,angular,Javascript,Json,Angular,在我的Angular2模板中,我有以下绑定: {{Stringify(result)}} {{result.MyProperty}} Stringify是一个返回输入对象的JSON.Stringify的函数。Stringify函数返回一个JSON字符串,显示MyProperty的名称和值 但是,第二行返回一个 打字错误。无法读取{{result.MyProperty}中未定义的属性“MyProperty” JSON.stringify清楚地表明这个属性/字段存在,那么为什么我会得到一个错误?如

在我的Angular2模板中,我有以下绑定:

{{Stringify(result)}}
{{result.MyProperty}}
Stringify
是一个返回输入对象的
JSON.Stringify
的函数。
Stringify
函数返回一个JSON字符串,显示
MyProperty
的名称和值

但是,第二行返回一个

打字错误。无法读取{{result.MyProperty}中未定义的属性“MyProperty”


JSON.stringify
清楚地表明这个属性/字段存在,那么为什么我会得到一个错误?

如果它在那里,它可以被访问,JS不会抛出

试试看

{{result?.MyProperty}}
可能Angular试图访问
结果。在
结果
之前,MyProperty
有一个值,而
字符串化(结果)
不会阻塞
。 当同时更新
result
时(可能是因为从服务器收到了值,视图将在您能够识别之前显示了空字符串之前进行更新。
你的问题没有提供足够的背景知识

另见

  • (来自下面的评论-感谢@MarkRajcok)

我不认为结果被分配给Stringify的结果,请看,其中的共识是“不,他们不应该”!你是对的。结果是通过订阅中的web服务调用填充的。它在有机会呈现之前就坏了,因此添加了“?”修正了。Günter Zöchbauer,你能为你的解决方案提供一个参考吗?这对我来说是新的,我想知道更多。Thanks@kennasoft。如果前面的表达式为
未定义
,则不计算
后面的表达式,而是返回
。谢谢。这是一个非常方便的功能e、 @kennasoft,提供的github链接gunter是一个很好的读物。如果您想要Angular.io doc链接,Elvis操作符将在模板语法doc一节中讨论。