typescript 传递可观察对象NgModel时,无法读取未定义传递错误的属性

5uzkadbs  于 2022-11-26  发布在  TypeScript
关注(0)|答案(1)|浏览(115)

我尝试将对象传递给Angular 模板中的NgModel,但收到错误“ERROR TypeError:无法读取undefined的属性(阅读'boxName')”初始化自订方块时,在我的.ts档案中:Box变量它在强迫我把它初始化为undefined so box:框=| undefined我进入tsconfig.json并将strictPropertyIntialization切换为false。因此我不再需要将变量初始化为undefined。我正在使用NgPrime并将所使用的box对象传递给editBox函数(https://i.stack.imgur.com/yaW9Y.jpg
这将传递给我的.ts文件(https://i.stack.imgur.com/GOdyH.jpg)中的此函数
当点击编辑按钮时,我记录了传递给函数的“box”,它包含所有正确的字段和json格式的信息。但是正如你在控制台中看到的,我得到了一个错误。(https://i.stack.imgur.com/6IE8Q.jpg
我猜它与订阅返回的观察对象有关,但由于我将box对象作为ngmodel传递给模板,我想我会很好。在这个图像中,你可以看到它发生在第65行,在那里我将ngmodel设置为box.boxName(https://i.stack.imgur.com/fw12g.jpg
如果有人能给我指出正确的方向,我将不胜感激,这里也是我调用editBox()时访问的服务的上下文。也是参考“Box”是另一个文件中的接口设置。(https://i.stack.imgur.com/QBKfv.jpg
^^^^^^^^^^^^^^^^^^^^^

bttbmeg0

bttbmeg01#

在某些阶段,您的框尚未初始化或等于undefined,因此您需要可选运算符(?)来防止该错误,例如[(ngModel)]="box?.boxName"

替代解决方案。

<div class="formgrid grid">行中,您可以添加条件以防止模板使用box对象

<div class="formgrid grid" *ngIf="box">

相关问题