我有一个这样的基类
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
那么在这种情况下如何让它发挥作用呢?
通常,当您调用 API 时,您会收到一个简单的 json 对象,而不是一个类。要将属性分配给类,请使用 Object.assign
this.commonService.getAllFunds(e.value).then(response => {
if (response.isSuccess) {
this.funds = Object.assign(new FundDto(), response.data);;
}
});