首页 > 解决方案 > 如何访问子类组件模板中的超类属性?角

问题描述

我有一个定义属性“提案”的抽象超类。

export abstract class myBaseClass {
  public proposal: Proposal;
}

和一个扩展它的类

export class mySubClassComponent Component extends myBaseClass{
    constructor() {
      super();
  }
}

我尝试在 mySubClassComponent 的模板中访问 myBaseClass 的属性“proposal”,如下所示:

*ngIf="proposal.position"

但我收到以下错误

TypeError:无法读取未定义的属性“位置”

如何在 mySubClassComponent 模板中访问此属性?

标签: javascriptangulartypescript

解决方案


您正在正确访问它。但是,您已经定义了类型,但实际上类属性实际上是undefined.

只需在您的 ngIf 中添加一个空检查,您就可以完成:

*ngIf="proposal?.position"

如果proposal已声明但其值为undefined ,这将避免不希望出现的错误。

基本上,为了更清楚,这是:

export abstract class myBaseClass {
  public proposal: Proposal;
}

与此相同:

export abstract class myBaseClass {
  public proposal: Proposal = undefined;
}

请记住,在 typescript 中,声明变量类型在代码编译后没有任何影响。如果变量未定义,则无论您在打字稿代码中声明的类型如何,它都会在运行时未定义。


推荐阅读