Javascript 在运行期间在Angular 6中重新指定复杂对象内的值
我目前使用angular 6,并采用以下方法:Javascript 在运行期间在Angular 6中重新指定复杂对象内的值,javascript,angular,typescript,Javascript,Angular,Typescript,我目前使用angular 6,并采用以下方法: public Save(): void { this.data.station.parkingSlot.forEach(p => { if(p.isAvailable){ p.isAvailable = false; this._carService.addCar(this.data); return true; }else{ alert("all
public Save(): void {
this.data.station.parkingSlot.forEach(p => {
if(p.isAvailable){
p.isAvailable = false;
this._carService.addCar(this.data);
return true;
}else{
alert("all parking lots are taken")
}
})
}
我想发送数据(this.data),更新后的isAvailable to false作为此内的参数。\u carService.addCar(this.data)
下面,您可以看到此.data对象的外观。如您所见,parkingSlot中的最后一个属性isAvailable未按原样更新为false
{
"id": 3,
"carType": "Spinter",
"plateNumber": "BUS-XXX-XXX",
"station": {
"id": 2,
"name": "STATION_2",
"longitude": 3,
"latitude": 4,
"city": "Oslo",
"streetName": "street1",
"houseNumber": 55,
"zipCode": 31000,
"parkingSlot": [
{
"id": 1,
"name": "PARKING_1",
"isAvailable": false
},
{
"id": 2,
"name": "PARKING_2",
"isAvailable": false
},
{
"id": 3,
"name": "PARKING_3",
**"isAvailable": true**
}
]
}
}
我希望它看起来像:
{
"id": 3,
"carType": "Spinter",
"plateNumber": "BUS-XXX-XXX",
"station": {
"id": 2,
"name": "STATION_2",
"longitude": 3,
"latitude": 4,
"city": "Oslo",
"streetName": "street1",
"houseNumber": 55,
"zipCode": 31000,
"parkingSlot": [
{
"id": 1,
"name": "PARKING_1",
"isAvailable": false
},
{
"id": 2,
"name": "PARKING_2",
"isAvailable": false
},
{
"id": 3,
"name": "PARKING_3",
**"isAvailable": false**
}
]
}
}
有谁知道解决办法是什么吗?我在谷歌搜索时尝试了我发现的一切。
非常感谢
另外,问题是您在每次迭代中调用
addCar
,但是您可能希望在所有标志设置为false
后执行
public Save(): void {
this.data.station.parkingSlot.forEach(p => {
if(p.isAvailable){
p.isAvailable = false;
return true;
}else{
alert("all parking lots are taken")
}
})
this._carService.addCar(this.data); // execute after all the isAvailable is set to false.
}
试试这个!问题是您过早地将
添加到此.data中。在所需的所有信息都已更改时添加到阵列:)
如果p.isAvailable
为true
,是否要将其设置为false
?在您的代码中,如果它已经是true
(if(p.isAvailable){p.isAvailable=true;…}
),那么将其设置为true
)将isAvailable更新为true的条件是什么?如果要将其设置为false,请执行if(p.isAvailable){p.isAvailable=false;我添加了p.isAvailable=false,但它的值在此内unchanged@Yuniku_123看到这个了吗
public Save(): void {
this.data.station.parkingSlot.forEach(p => {
if(p.isAvailable){
p.isAvailable = false;
return true;
} else {
alert("all parking lots are taken")
}
});
this._carService.addCar(this.data); // puts complete data in the this.data
}