Несколько переключателей с одинаковым набором опций - PullRequest
0 голосов
/ 26 мая 2018

У меня есть четыре набора переключателей, каждый из которых содержит четыре параметра, как показано в приведенном ниже коде:

    <div *ngFor="let index of [0,1,2,3]">
        <label *ngFor="let vehicle of vehicles" class="radio">
            <input type="radio" 
                   id="radio1" 
                   [value]="vehicle" 
                   (change)="updateValues(vehicles, formArray.value, index)"
                   name="vehicle" formControlName="vehicle">
            {{vehicle.name}} ({{vehicle.total_no}})
        </label>
    </div>

Каждому транспортному средству в указанном выше наборе параметров присвоено имя и общее число.При выборе транспортного средства значение общего числа должно обновляться.Опция также должна быть отключена, если общее число равно нулю.

Я написал функцию, которая корректно обновляет значения, но, к сожалению, она также регистрирует изменения в других наборах переключателей.

  updateValues(vehicles, form, index) {
    let x;
    let selectedVehicles = form.map(x => x.vehicle);
    if (this._prevSelectedVehicles[index] === '') {
      x = vehicles.indexOf(selectedVehicles[index]);
      vehicles[x].total_no -= 1;
      this._prevSelectedVehicles[index] = selectedVehicles[index];
      this.updateTime(form, selectedVehicles);
    } else if (
      selectedVehicles[index].name !== this._prevSelectedVehicles[index].name
    ) {
      x = vehicles.indexOf(this._prevSelectedVehicles[index]);
      vehicles[x].total_no += 1;
      x = vehicles.indexOf(selectedVehicles[index]);
      vehicles[x].total_no -= 1;
      this._prevSelectedVehicles[index] = selectedVehicles[index];
      this.updateTime(form, selectedVehicles);
    }
  }

Как я могу убедиться, что значения, выбранные в предыдущих div, не обновляются?Также прикрепление макета, если вопрос неясен.

enter image description here

1 Ответ

0 голосов
/ 27 мая 2018

Используйте уникальный идентификатор для каждого транспортного средства-объекта и сравнивайте его.Например,

...

if(vehicles[x].id === this._prevSelectedVehicles[index].id){

     x = vehicles.indexOf(this._prevSelectedVehicles[index]);
     vehicles[x].total_no += 1;
     x = vehicles.indexOf(selectedVehicles[index]);
     vehicles[x].total_no -= 1;
     this._prevSelectedVehicles[index] = selectedVehicles[index];

} 

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...