Возвращает значение из массива объектов, где выполнено определенное требование

#arrays #angular #typescript #filter

#массивы #angular #typescript #Фильтр

Вопрос:

В моем шаблоне у меня есть продукты, у которых есть изображение. Вы можете заказать эти продукты, которые должны сделать изображение другим изображением. Заказ может иметь несколько статусов: заказ размещен, заказан и получен. Мне нужно получить статус от продукта с определенным идентификатором. Это мой шаблон:

 <div *ngFor="let lproduct of locationProducts">
      <div class="productDivWidth" *ngIf="lproduct.departmentId.departmentId == location.departmentId.departmentId">
        {{lproduct.productId.productName}}
        <br>
        <img *ngIf="IsOrdered(lproduct.productId.productId) === null" src="{{lproduct.productId.productImage}}"
          class="product-image">
        <img *ngIf="IsOrdered(lproduct.productId.productId) === Openstaand"
          src="https://image.flaticon.com/icons/svg/175/175461.svg" class="product-image">
        <br>
        <button class="btn btn-default" data-toggle="modal" data-target="#exampleModal"
          (click)="OrderProduct(lproduct.productDepartmentId)"></button>
      </div>
    </div>
  

Моя функция:

  IsOrdered(id: number) {
    return this.orders.filter(e => e.productId.productId === id).statusId.statusName;
  }
  

Комментарии:

1. Я отредактировал ваш пост, чтобы использовать форматирование блочного кода и сделать его более понятным для понимания.

Ответ №1:

метод filter возвращает массив, поэтому попробуйте заменить его на find, который возвращает первый соответствующий элемент, поскольку я полагаю, что идентификаторы уникальны, поэтому измените свой статус возврата на

 return this.orders.find(e => e.productId.productId === id).statusId.statusName
  

Комментарии:

1. Рекомендуется проверять наличие null перед доступом к свойству после метода find