Вы можете упростить свой код, просто передав индекс корзины, чтобы проверить наличие товара. Если вы получите значение ion-select
с помощью ngModel, вы можете получить доступ к этому значению непосредственно в функции, не передавая его.
Там мы l oop запас выбранных вами продуктов. Если оставшееся количество меньше количества вашего товара, корзина отключена. Это добавит новый css класс item-disabled
к вашему предмету, который устанавливает прозрачный фон.
Html
<ion-list>
<ion-item *ngFor="let c of cart; let i=index" class="ion-text-wrap" [ngClass]="{ 'item-transparent': c.disabled }">
<ion-grid>
<div class="ion-text-end" *ngIf="c.disabled">
<ion-label color="tertiary">Out of stock</ion-label>
</div>
<ion-select style="max-width:50%;" [(ngModel)]="productQuantity" (ionChange)="checkIfProductIsOutOfStock(i)" value="c.quantity">
<ion-select-option value="quantity" *ngFor="let quantity of c.quantity">{{ quantity }}</ion-select-option>
</ion-select>
</ion-grid>
</ion-item>
</ion-list>
Ts
productQuantity: number;
checkIfProductIsOutOfStock(index: number) {
const stocks = this.cart[index].products.stocks;
stocks.forEach((stock: object) => {
if (this.productQuantity > stock['RemainingQuantity'] {
this.cart[index].disabled = true;
}
});
}
Css
.item-transparent {
--background: transparent;
}