首页 > 解决方案 > 角度子对象对象可能是“未定义”

问题描述

我有一个从 api 返回的对象,这个对象有一个子对象。当我在我的组件 html 中显示此子对象的属性时,他工作了。但是当我尝试构建我的项目时,我收到以下错误:

对象可能是“未定义的”。

我的html组件代码:

<img [src]="person?.gallery?.images[0]?.url" />

我也尝试了下面的代码,但现在工作并且很复杂:

<ng-container *ngIf="person !== undefined && person.gallery !== undefined && person.gallery.images !== undefined && person.gallery.length > 0 && person.gallery.images[0] !== undefined">
        <img [src]="person?.gallery?.images[0]?.url" />
</ng-container>

在 localhost 中有效,但是当我执行 ng build –prod 时,我得到了这些错误。

标签: javascriptarraysangulartypescriptlint

解决方案


Angular 中的开发和生产模式是不同的。根据您在项目中使用的设置,生产模式可能会进行额外检查。

在您的情况下,请尝试使用:

<ng-container *ngIf="person?.gallery?.images[0]?.url as u">
  <img [src]="u" />
</ng-container>

我还建议重新考虑你的策略。该foo?.bar?.baz?.goo构造看起来可以使用连击实现。


推荐阅读