对象可能为空或未定义 [重复]
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()”没有明确的返回类型,这意味着它可以返回 null
、undefined
或任何与此相关的对象。
如果对象是null
或undefined
,modalRef
上的属性(如内容)可能不存在,这就是您的 IDE 标记它的原因。
修复
要解决此问题,您可以将 modalRef.content
包装在 if 语句中,并确保 content 属性可用。
不用问号(表示modalRef
是可选的),您可以使用感叹号告诉您的IDE modalRef 始终设置。
if (modalRef && modalRef.content)
modalRef!.content.presetStations = "anything"
【讨论】:
以上是关于对象可能为空或未定义 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
IE:无法获取属性“clientWidth”的值:对象为空或未定义
当第一个属性为空或未定义时如何使用 ES6 对象解构默认为另一个属性
Asp.net MVC 中的 jquery 验证错误 - 无法获取属性“调用”的值:对象为空或未定义