如何在子类组件模板中访问超类属性?角度的

时间:2019-02-12 15:46:22

标签: javascript angular typescript

我有一个抽象的超类,它定义了属性“ proposal”。

export abstract class myBaseClass {
  public proposal: Proposal;
}

和扩展它的类

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

我尝试像这样在mySubClassComponent模板中访问myBaseClass的属性“ proposal”:

*ngIf="proposal.position"

但是出现以下错误

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

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

1 个答案:

答案 0 :(得分:2)

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

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

*ngIf="proposal?.position"

如果声明了proposal,但其值为 undefined ,这将避免意外的错误。

基本上,为了更清楚一点,这是

export abstract class myBaseClass {
  public proposal: Proposal;
}

与此相同:

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

请记住,在打字稿中,在编译代码后声明变量类型无效。如果未定义变量,则无论您在打字稿代码中声明的类型如何,该变量在运行时都将是未定义的。