Я создаю приложение, в котором есть набор данных. Мне нужно создать поисковые фильтры для этого набора данных, и для этого я использую каналы Angular.
Проблема в том, что я хотел бы проверить два поля данных с одним вводом.
Ввод: имя
Поля: название счета, имя клиента.
Я попытался создать 2 отдельных канала
Канал 1:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'invoiceLastNameFilter'
})
export class invoiceLastNameFilterPipe implements PipeTransform {
transform(openInvoices: any, lastName: any): any {
if(lastName === undefined || lastName === null) return openInvoices;
return openInvoices.filter(function(invoice){
return invoice.Invoice_Last_Name.toLowerCase().includes(lastName.toLowerCase());
});
}
}
Канал 2:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'customerLastNameFilter'
})
export class customerLastNameFilterPipe implements PipeTransform {
transform(openInvoices: any, lastName: any): any {
if(lastName === undefined || lastName === null) return openInvoices;
return openInvoices.filter(function(invoice){
return invoice.Customer_Last_Name.toLowerCase().includes(lastName.toLowerCase());
});
}
}
Здесь трубы называются:
<form>
<div class="form-group">
<label for="">Last name:</label>
<input type="text" class="form-control" name="lastName" placeholder="Enter Last name..." [ngModel]="lastName" (ngModelChange)="lastName = $event">
</div>
</form>
<table class="table table-hover table-responsive" id="data-table">
<thead>
<tr>
<th></th>
<th>Ben</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let invoice of openInvoices | customerLastNameFilter: lastName | invoiceLastNameFilter: lastName">
<td>{{ invoice.Invoice_Last_Name }}</td>
<td>{{ invoice.Customer_Last_Name }}</td>
</tr>
</tbody>
</table>
Конечно, это не работает.
Может ли кто-нибудь помочь с решением этого?
Это вообще возможно?
Благодарю вас!