#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