Кнопка отключения после добавления в корзину — Угловая 11

#angular #typescript

Вопрос:

В списке товаров для каждого товара есть кнопка «Добавить в корзину». Когда я нажимаю на кнопку, она отключается. Но когда я нажимаю кнопку для другого продукта, кнопка предыдущего продукта снова включается. Как я могу убедиться, что предыдущая кнопка остается отключенной?

HTML-код

 <button class="btn btn-outline-danger btn-sm mt-2" type="button"
                    (click)="btnAddToCart(prod)" [disabled]="itemExists===prod.Id">Add To Cart
</button>
 

код компонента.ts

 itemExists: number;

btnAddToCart(product: ProductList) {
  this.cartService.addToCart(product);
    if (product.Id) {
      this.itemExists = product.Id;
    }
}
 

Ответ №1:

Вам понадобится какой-то способ отслеживать список идентификаторов продуктов, а не только самые последние, что в настоящее время делает ваш код.

Одно из предложений состоит в том, чтобы перейти itemExists в массив и использовать его для хранения всех добавленных идентификаторов.

 itemExists: number[] = [];

btnAddToCart(product: ProductList) {
  this.cartService.addToCart(product);
    if (product.Id amp;amp; !itemExists.includes(product.id)) {
        this.itemExists.push(product.Id);
    }
}
 

Ваши кнопки могут определять свое состояние с помощью небольшого логического изменения, которое проверяет, включает ли массив текущее product.id.

 <button class="btn btn-outline-danger btn-sm mt-2" type="button"
    (click)="btnAddToCart(prod)" [disabled]="itemExists.includes(prod.Id)">Add To Cart
</button>
 

Помните, что если вы удалите какой — либо товар из корзины, идентификатор должен быть удален из массива-если это имеет смысл для вашего приложения.