无法访问基类的getter

问题描述 投票:0回答:1

我有一个这样的基类

export class ShortNameFullNameBaseDto extends DtoBase<number> {
  public shortName: string = '';
  public fullName: string = '';

  public get uniqueName(): string {
    return `${this.shortName} - ${this.fullName}`;
  }
}

还有像这样的继承类

export class FundDto extends ShortNameFullNameBaseDto {
  public sebiRegistrationNumber: string = '';
  public investmentManagerName: string = '';
  public sponsorName: string = '';
  public merchantBankerName: string = '';
  public legalAdvisorName: string = '';
  public fundHouseId: number = null;
  public fundHouse: FundHouseDto = null;
}

我从Web api加载

FundDto
,之后我期望当我调用
FundDto.uniqueName
属性时我应该得到它,但我总是得到这个属性
undefined

这就是我加载

FundDto
对象数组的方式

this.commonService.getAllFunds(e.value).then(response => {
  if (response.isSuccess) {
    this.funds = response.data;
  }
});

我做错了什么?

是从 Web api 响应加载对象造成了问题吗?

更新

我刚刚尝试了这段代码,它运行得很好。所以看起来是因为我正在将数据复制到从 Web api 响应接收到的

FundDto
对象,并且该响应没有
uniqueName
属性。

const fund = new FundDto();
fund.shortName = 'short name';
fund.fullName = 'full name';

console.log(fund.uniqueName); // here it works

那么在这种情况下如何让它发挥作用呢?

angular typescript asp.net-core-webapi
1个回答
0
投票

通常,当您调用 API 时,您会收到一个简单的 json 对象,而不是一个类。要将属性分配给类,请使用 Object.assign

this.commonService.getAllFunds(e.value).then(response => {
  if (response.isSuccess) {
    this.funds = Object.assign(new FundDto(), response.data);;
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.