我正在使用Angular 4的项目 .
我正在使用这样的代码:
<div *ngFor="let item of results">
<p> {{item.location.city}} </p>
<p> {{item.location.country}} </p>
</div>
为了显示json的一些结果,我得到了一个请求 .
问题是我的BDD构造不好,有时没有位置 . 一旦值出现问题,结果的其余部分就会停止显示,这有点烦人 .
有没有办法检查值是否存在,如果是这种情况,让角度显示它 . 我尝试使用ngIf,但遇到了与角度相同的问题,试着看看是否有值,如果没有停止ngfor .
你可以在这里看到问题:http://yunomusic.com/page-search-event(尝试使用巴黎城市广告向下滚动你会看到:
和我从控制台得到的错误:
vendor.fa8737033d56bf5e7c33.bundle.js:17 ERROR TypeError: Cannot read property 'city' of undefined
at Object.eval [as updateDirectives] (e.ngfactory.js:163)
at Object.updateDirectives (vendor.fa8737033d56bf5e7c33.bundle.js:136)
at ur (vendor.fa8737033d56bf5e7c33.bundle.js:136)
at wr (vendor.fa8737033d56bf5e7c33.bundle.js:136)
at br (vendor.fa8737033d56bf5e7c33.bundle.js:136)
at ur (vendor.fa8737033d56bf5e7c33.bundle.js:136)
at wr (vendor.fa8737033d56bf5e7c33.bundle.js:136)
at br (vendor.fa8737033d56bf5e7c33.bundle.js:136)
at ur (vendor.fa8737033d56bf5e7c33.bundle.js:136)
at wr (vendor.fa8737033d56bf5e7c33.bundle.js:136)
angular尝试读取组件城市,但在我的BDD中的某些元素上我没有 . 我需要在展示之前检查一下 .
提前致谢 !
2 回答
将* ngIf =“item.location”添加到p标签中
在这种情况下,更好的解决方案是使用 safe navigation operator 而不使用 ng-if ,