开发者问题收集

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