我尝试将对象传递给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)
^^^^^^^^^^^^^^^^^^^^^
1条答案
按热度按时间bttbmeg01#
在某些阶段,您的框尚未初始化或等于undefined,因此您需要可选运算符(
?
)来防止该错误,例如[(ngModel)]="box?.boxName"
替代解决方案。
在
<div class="formgrid grid">
行中,您可以添加条件以防止模板使用box
对象