Я работаю над приложением доставки еды, где у немногих предметов есть возможность настроить предмет.У немногих предметов есть флажки, и у немногих есть радио-кнопка.У меня есть функция, которая проверяет, установлены ли флажки или выбрана радиокнопка в одной функции.Теперь то, что я хочу, это как я могу удалить определенный элемент, если снять флажок из массива.
Я попытался использовать 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>₨ {{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>₨ {{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", {…}]