angular - 无法准备好未定义的自定义组件的属性
问题描述
我有一个自定义<app-ibd-payment>
组件。我在应用程序的两个地方使用它,它在一个地方工作正常,但在另一个地方,它会抛出错误:
<app-ibd-payment-details [intermediaryBankInfo]="banks.intermediaryBankInfo"
*ngIf="banks.intermediaryBankInfo != null">
</app-ibd-payment-details>
SupplierDetailsComponent.html:3676 错误类型错误:无法读取 Object.eval [as updateDirectives] 处未定义的属性“intermediaryBankInfo”(SupplierDetailsComponent.html:3693)
解决方案
这意味着banks
未定义。您应该向您的支票添加支票,*ngIf
以确保您可以在其上调用属性。
<app-ibd-payment-details [intermediaryBankInfo]="banks.intermediaryBankInfo"
*ngIf="banks && banks.intermediaryBankInfo != null">
</app-ibd-payment-details>
如果您banks
在 HTML 中的其他位置调用属性,则可以将banks
条件移到更高级别。
<ng-container *ngIf="banks">
<h2>{{banks.title}}</h2>
<app-ibd-payment-details [intermediaryBankInfo]="banks.intermediaryBankInfo"
*ngIf="banks.intermediaryBankInfo != null">
</app-ibd-payment-details>
</ng-container>
如果您使用的是 Angular 9,则可以通过在可能是或?
的属性之后放置 a 来使用可选链接。null
undefined
<app-ibd-payment-details [intermediaryBankInfo]="banks.intermediaryBankInfo"
*ngIf="banks?.intermediaryBankInfo != null">
</app-ibd-payment-details>
推荐阅读
- discord.js - UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“startsWith”
- npm - Git FTP没有在bitbucket管道中推送构建文件夹
- qt - 使用 QML 在 Qt 上创建动态 MapQuickItem
- sqlite - 网络驱动器上的 sqlite 格式错误
- php - 在 Hostinger 上的 hPanel 上运行 cron 作业
- arduino - 使用 ios 构建 arduino 智能手表
- c# - 尝试更改 Sharepoint List 用户 REST 和 .NET 中的项目时出现错误请求
- wget - 使用 wget 从 index.html url 下载文件列表
- outlook - Postfix Outlook 插件
- c++ - 为什么虚表的虚函数地址和类上的虚函数地址不同?