在打字稿中手动设置值对象的属性



我试图手动设置一个值对象的属性如果它的数据不存在从服务调用

数据来自服务调用(它可以工作,因为我得到了数据)。从服务调用中得到的对象看起来是这样的:

export class AllHouseData {
dataList: HouseResponse[];
numberOfHouses: number;
}

houserresponse对象的值对象如下所示:

export class HouseResponse {
id: number;
name: string;
settings: HouseSettings[];
}

housessettings对象的值对象如下所示:

export class HouseSettings {
id: number;
houseCode: string
parking: any;
}

下面是我试图分配对象属性的代码:

export class HouseComponent implements OnInit {
houseData: AllHouseData;
callHouseService(houseList) {
this.houseService.getHouseData(houseList).subscribe((data) => {
this.houseData = data;
if (data === null) {
this.houseData.dataList = [
{
id: 0,
name: "",
settings: [{ id: number, houseCode: "", parking: false }],
},
];
}
});
}
}

当我尝试手动设置数据时,Typescript没有给我任何错误。然而,在浏览器的控制台中,我得到以下错误:error TypeError: Cannot set properties of null (setting 'dataList').

我的问题是,手动设置这个对象的正确方法是什么?

看起来您的gethoussedata调用返回null,您没有对此进行检查。

如果你需要这个。我建议使用具有默认值的构造函数。

export class HouseSettings {
constructor(public id = 0, houseCode = '', parking = false) {}
}
export class HouseResponse {
constructor(public id = 0, name = '', public settings = [new HouseSettings()]) {}
}
export class AllHouseData {
constructor(public dataList = [new HouseResponse()], public numberOfHouses = 0) {}
}

那么在你的订阅中你可以简单地使用:

data => this.houseData = data ?? new AllHouseData()

相关内容

  • 没有找到相关文章

最新更新