потому что p не существует из
<select>
<option *ngFor="let p of PriceFilter">{{p.DisplayText}}</option>
</select>
, чтобы поймать его в следующем фильтре ngfor.Вы должны найти альтернативу, чтобы получить значение выбранного пользователем p и передать его в свою трубу фильтра.
Отредактировано, как вы указали в комментарии
<h2>store</h2>
<select [(ngModel)]="selectedOption" name=Gender>
<option *ngFor="let g of GenderFilter">{{g.DisplayText}}</option>
</select>
<select [(ngModel)]="selectedOptionPrice" name=Price>
<option *ngFor="let p of PriceFilter">{{p.DisplayText}}</option>
</select>
вы можете отделить фильтр от ngfor.разделите ngFor в ng-контейнере и вызовите функцию фильтра в вашем теге tr.
<ng-container *ngFor="let P of products | orderBy: 'PriceFilter'">
<tr *ngIf=filter(selectedOptionPrice)>
<td>{{selectedOptionPrice.DisplayText}}</td>
</tr>
</ng-container>
добавьте ваш фильтр pipe в качестве функции filter () вашего файла .ts.Это будет более конкретно, чем использование канала.
.TS file
filter(price) {
return price
? this.items.filter(item => item.ProductTags.indexOf(price) !== -1) : this.items;
}