Angular - обновить индекс ngFor на фильтре - PullRequest
0 голосов
/ 05 марта 2020

У меня есть список с * ngFor в шаблоне:

<li *ngFor="let product of products | filterProducts: selectedFilter; index as productId">
    <a [routerLink]="['/product', productId]">
      {{product.name}}
    </a>
</li>

Поэтому я использую канал filterProducts для фильтрации элементов массива с выбранными параметрами, но при изменении массива он не обновляет productId в шаблоне, так что routerLink выводит меня на страницу с неправильными сведениями (она использует идентификатор продукта в исходном массиве).

Любая помощь с этим? Мне нужно обновлять productId в шаблоне каждый раз, когда я фильтрую элементы в массиве.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Похоже, вы пытаетесь использовать index в качестве productId, я думаю, что вы должны использовать какое-то свойство product, например product.id или product.productId в routerLink, например, вам также не нужен индекс как productId. [Вы также можете удалить это]

<li *ngFor="let product of products | filterProducts: selectedFilter; index as productId">
    <a [routerLink]="['/product', product.productId]">
      {{product.name}}
    </a>
</li>
0 голосов
/ 05 марта 2020

index как productId установить индекс товара в массиве товаров. Это похоже на productId = products.indexOf (product). Попробуйте использовать свойство id в объекте продукта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...