TypeError:未定义不是一个对象(评估“ctx.item.Street”)(NativeScript)
2020-08-21
1584
我已附加一个向
NativeScript
提供 JSON 数据的数据库。
我已经取得了很大进展,能够从
MongoDB
中提取数据,将数据路由到
array
,然后在应用程序的每个
HTML
视图中显示数据。
问题
:
Item
元素被视为
未定义
,但当我在执行检索和分配函数后
console.log()
Item
时,我得到了准确的 JSON 元素
{
"_id": "5f3c82f37cdb5d6766c73217",
"Street": "134 Marin Drive",
"City": "ABSECON",
"Zip": "08201"
}
JS
export class ItemDetailComponent implements OnInit {
item: Item;
constructor(
private itemService: ItemService,
private route: ActivatedRoute,
) {}
ngOnInit(): void {
const id = this.route.snapshot.params.id;
this.itemService.getItem(id).then(item => {
this.item = item;
console.log(this.item);
});
}
}
HTML
<FlexboxLayout class="m-15">
<Label class="h2" [text]="item.Street"></Label>
<Label class="h2" [text]="item.City"></Label>
<Label class="h2" [text]="item.Zip"></Label>
</FlexboxLayout>
https://i.sstatic.net/80Jzn.jpg
现在我知道这个代码可以正确输出和查看数据,但我仍然收到此错误,这会导致应用程序在非模拟
iPhone
下运行崩溃。因此,如果有人能提供如何正确显示这些数据的建议,我将不胜感激。
1个回答
事态急转直下。花了太长时间,但找到了解决方案。您可以在对象变量名称后添加 ?,例如
<Label class="h2" [text]="item?.Street"></Label>
?.(Elvis 运算符)表示模板字段是可选的,如果未定义,则应忽略表达式的其余部分。
参考。 https://forum.ionicframework.com/t/problems-with-json-processing-undefined-is-not-an-object/49428
Snooder
2020-08-21