angular TypeError: Невозможно прочитать свойство 'name' undefined - PullRequest
0 голосов
/ 26 июня 2018

Я работаю над угловым 2 выпуском 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 голосов
/ 26 июня 2018

Можете ли вы попробовать это.

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

item.outputProjection? .Name не выдаст неопределенную ошибку, он проверит, определен ли item.outputProjection, и если это так,получит имя из него.

0 голосов
/ 26 июня 2018

К сожалению, я не смог добавить оператор elvis в ngModel с двухсторонним связыванием, поэтому я сделал это, и это сработало.

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

И это сработало!

0 голосов
/ 26 июня 2018

Пожалуйста, убедитесь, что item.outputProjection не undefined.

Обходной путь для вас - определить item.outputProjection = {} в вашем файле компонента .ts.

...