首页 文章

在尝试显示值Angular 4之前检查是否存在值

提问于
浏览
1

我正在使用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(尝试使用巴黎城市广告向下滚动你会看到:
problem screenshot

和我从控制台得到的错误:

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 回答

  • 3

    将* ngIf =“item.location”添加到p标签中

  • 2

    在这种情况下,更好的解决方案是使用 safe navigation operator 而不使用 ng-if

    <div *ngFor="let item of results">
     <p> {{item?.location?.city}} </p>
     <p> {{item?.location?.country}} </p>
    </div>
    

相关问题