Как удалить определенные данные из массива, когда флажок снят в ionic 3 - PullRequest
0 голосов
/ 21 декабря 2018

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

Я попытался использовать arrayname.pop (ItemId, CustomItemId, data), но он просто удаляет данные, а не itemidили customitemid.I попытался использовать соединение с индексом выбранного элемента и не получил никакой разницы в выводе.

Моя функция ниже.

selectCat(data,index){
    console.log("From CheckBox Before",data);
    const checked = data.checked;
    if (checked || this.customItems) {

      this.itemID = localStorage.getItem("ForDisplayItemID");
      console.log("this.itemID",this.itemID);
      this.gotta = this.selectedArrayCust.push(this.itemID,"~",data.CUSTOMDATID,data);

      localStorage.setItem('customiseDataStorage',this.selectedArrayCust);
      this.gotta = localStorage.getItem('customiseDataStorage');
      console.log('Checking array Checkbox side',this.gotta);
       var checkValue = data.RATE;
       var add  =  this.modalTotal;
       add = Number.parseInt(add.toString()) + Number.parseInt(checkValue.toString());
          this.modalTotal = add;
     localStorage.setItem("modalTotal",this.modalTotal);
     } else {
      var i = this.selectedArrayCust.indexOf(data);
      console.log("Console index else part",i)
      this.selectedArrayCust.splice(index);
      console.log("Else remove check",data.RATE);
      var checkValue = data.RATE;
      var sub  =  this.modalTotal;
      sub = Number.parseInt(sub.toString()) - Number.parseInt(checkValue.toString());
      this.modalTotal = sub;

     localStorage.setItem("modalTotal",this.modalTotal);
      let newArray = this.selectedArrayCust.filter(function(el) {
        return el !== data;
     });
      this.selectedArrayCust = newArray;

    }
    console.log("From CheckBox After",this.selectedArrayCust);
    console.log("CheckBox",data.RATE);
   }

, и это мой HTML-файл:

 <ion-list *ngFor = "let title of data" >
      <ion-row  radio-group name="customItems" [(ngModel)]="customItems">
        <ion-item>
          <p>{{title.CUSTOMNAME}}</p>
        </ion-item> 
        <ion-col *ngIf = 'title.TYPE !== "INC";else checkb'>
          <div  *ngFor = "let customItems of title?.DET; let i = index;">
          <ion-item>

            <ion-label>{{customItems.CUSTOMDATNAME}}</ion-label>
            <ion-radio (ionSelect)="selectCat(customItems,i)" [value]="customItems" checked={{selected}}
            ngDefaultControl></ion-radio>
            <ion-label>&#x20a8; {{customItems.RATE}}</ion-label>
          </ion-item>
        </div>
        </ion-col>
        <ng-template #checkb>
            <ion-col>
                <ion-item  *ngFor = "let customItems of title?.DET; let i = index">
                    <ion-label>{{customItems.CUSTOMDATNAME}}</ion-label>
                    <ion-checkbox [(ngModel)]="customItems.checked" (ngModelChange)="selectCat(customItems,$event,i)"></ion-checkbox>
                    <ion-label>&#x20a8; {{customItems.RATE}}</ion-label>
                </ion-item>
              </ion-col>
        </ng-template>
      </ion-row>

    </ion-list>
    <ion-item>
      Total <span slot="end">{{modalTotal}}</span>
    </ion-item>
    <ion-buttons end>
        <button ion-button (click) = "submitCustomisation()">
          Save
        </button>
      </ion-buttons>

Вывод, который я получаю после нажатия элементов:

["9", "~", "28", {…}, "9", "~", "26", {…}, "9", "~", "27", {…}]

, где 9 - ItemId ~ - разделитель 28,26,27 - customItemId и {....} - это данные пользовательского элемента.

Вывод, который я хочу получить после удаления элемента из массива, должен выглядеть следующим образом.Если я снял флажок CustomId 27 Таким образом, вывод должен быть:

["9", "~", "28", {…}, "9", "~", "26", {…}]

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