javascript - 如何访问子类组件模板中的超类属性?角
问题描述
我有一个定义属性“提案”的抽象超类。
export abstract class myBaseClass {
public proposal: Proposal;
}
和一个扩展它的类
export class mySubClassComponent Component extends myBaseClass{
constructor() {
super();
}
}
我尝试在 mySubClassComponent 的模板中访问 myBaseClass 的属性“proposal”,如下所示:
*ngIf="proposal.position"
但我收到以下错误
TypeError:无法读取未定义的属性“位置”
如何在 mySubClassComponent 模板中访问此属性?
解决方案
您正在正确访问它。但是,您已经定义了类型,但实际上类属性实际上是undefined
.
只需在您的 ngIf 中添加一个空检查,您就可以完成:
*ngIf="proposal?.position"
如果proposal
已声明但其值为undefined ,这将避免不希望出现的错误。
基本上,为了更清楚,这是:
export abstract class myBaseClass {
public proposal: Proposal;
}
与此相同:
export abstract class myBaseClass {
public proposal: Proposal = undefined;
}
请记住,在 typescript 中,声明变量类型在代码编译后没有任何影响。如果变量未定义,则无论您在打字稿代码中声明的类型如何,它都会在运行时未定义。
推荐阅读
- python - kivymd 窗口自动全屏打开且光标不可见
- java - “IS NULL”过滤器vaadin
- php - 在行中隐藏和取消隐藏href
- security - 如何在 CPU x86-64 寄存器中执行不同的命令?
- firebase - 即使我在具有相同 ID 的 xml 和 java 文件中对按钮进行了编码,也会遇到空异常
- quarkus - 如何为 Qute 消息自动选择语言
- html - 我的引导容器没有得到全宽。如何解决这个问题呢?
- node.js - 在 macOS Big Sur 上使用 npm 安装 expo-cli 时出错
- python - transformers.TrainingArguments 中的“output_dir”是什么意思?
- neo4j - 如何在.net core中编写neo4j密码的用户定义函数和存储过程查询?