角度TypeError:无法读取“名称”的属性未定义

时间:2018-06-26 01:02:25

标签: angular typeahead

我正在使用Angle 2 Release 6应用程序和以下代码行:

<input #instance="ngbTypeahead" type="text" class="form-control" [(ngModel)]="item.outputProjection.name" [ngbTypeahead]="search" />   

并且出现以下错误:

DatacartComponent.html:60 ERROR TypeError: Cannot read property 'name' of undefined
at Object.eval [as updateDirectives] (DatacartComponent.html:60)
at Object.debugUpdateDirectives [as updateDirectives] (core.js:11914)
at checkAndUpdateView (core.js:11307)
at callViewAction (core.js:11548)
at execEmbeddedViewsAction (core.js:11511)
at checkAndUpdateView (core.js:11308)
at callViewAction (core.js:11548)
at execEmbeddedViewsAction (core.js:11511)
at checkAndUpdateView (core.js:11308)
at callViewAction (core.js:11548)

而且我不太确定该如何做才能更好地检查引导程序类型上的对象定义。

3 个答案:

答案 0 :(得分:2)

请确保item.outputProjection不是undefined

为您解决的方法是在组件item.outputProjection = {}文件中定义.ts

答案 1 :(得分:0)

你可以试试这个吗?

<input #instance="ngbTypeahead" type="text" class="form-control" [(ngModel)]="item.outputProjection?.name" [ngbTypeahead]="search" /> 

item.outputProjection?.name 不会引发未定义的错误,它会检查item.outputProjection是否已定义,如果是,则从中获取名称。

答案 2 :(得分:0)

不幸的是,我无法将Elvis运算符添加到具有2种方式绑定的ngModel上,因此我做到了,并且奏效了。

[(ngModel)]="item && item.outputProjection && item.outputProjection.name"

成功了!