Javascript 在运行期间在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

我目前使用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 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
}