对象可能为空或未定义 [重复]

Posted

技术标签:

【中文标题】对象可能为空或未定义 [重复]【英文标题】:Object is possibly null or undefined [duplicate] 【发布时间】:2021-12-01 20:22:24 【问题描述】:

对于这行特定的代码,我收到一个错误:对象为空或未定义。

  private modalService: BsModalService

  const modalRef = this.modalService.show(ABStationDialogComponent);
  modalRef.content.presetStations = this.allStations;
  modalRef.content.editStation = JSON.parse(JSON.stringify(this.editStation)); // Deep copy
  modalRef.content.relatedFrom = this.editAbEntry.fromDate ? this.editAbEntry.fromDate : '';
  modalRef.content.relatedTo = this.editAbEntry.toDate ? this.editAbEntry.toDate : '';
  modalRef.content.editStations = this.editStations;
  modalRef.content.pageReady = true;

我尝试使用可选链接但没有帮助。然后我收到此错误:

The left-hand side of an assignment expression may not be an optional property access.

请查看图片和错误。

即使尝试用 if 语句结束也无济于事。安装 webpack 5 后,我的 Angular 应用程序中出现此错误。

有人可以帮我解决这个问题吗?

【问题讨论】:

this.modalService.show(ABStationDialogComponent); 返回什么? 它是一个引导模式服务@depperm github.com/valor-software/ngx-bootstrap/blob/development/src/… 【参考方案1】:

让我们稍微分解一下:

第 276 行:this.modalService.show()

modalService 上的方法“show()”没有明确的返回类型,这意味着它可以返回 nullundefined 或任何与此相关的对象。

如果对象是nullundefinedmodalRef 上的属性(如内容)可能不存在,这就是您的 IDE 标记它的原因。

修复

要解决此问题,您可以将 modalRef.content 包装在 if 语句中,并确保 content 属性可用。

不用问号(表示modalRef 是可选的),您可以使用感叹号告诉您的IDE modalRef 始终设置。

if (modalRef && modalRef.content) 
  modalRef!.content.presetStations = "anything"

【讨论】:

以上是关于对象可能为空或未定义 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

IE:无法获取属性“clientWidth”的值:对象为空或未定义

js 判断变量是否为空或未定义

当第一个属性为空或未定义时如何使用 ES6 对象解构默认为另一个属性

Asp.net MVC 中的 jquery 验证错误 - 无法获取属性“调用”的值:对象为空或未定义

IE9 JavaScript 错误:SCRIPT5007:无法获取属性“ui”的值:对象为空或未定义

shell脚本的变量赋值