У меня есть поисковый канал, который прекрасно работает на моей products
странице (данных), теперь, когда у меня есть другой набор данных invoices
Я хотел бы использовать этот же канал для поиска в счетах на этот раз.
Вопрос
Как настроить мою трубу так, чтобы она принимала значения products
и invoices
в зависимости от того, какой пользователь страницы выполняет поиск?
Код
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'search'
})
export class SearchPipe implements PipeTransform {
transform(products: any[], terms: string): any[] {
if (!products) { return []; }
if (!terms) { return products; }
terms = terms.toLowerCase();
return products.filter( it => {
return it.name.toLowerCase().includes(terms);
});
}
}
PS: Я нашел это , но я не мог понять это точно.
Обновление
Основываясь на ответах ниже, вот как данные счета
[
{
"id":1,
"user_id":1,
"name":"cargo website",
"quantity":"1",
"body":"frhsaeh",
"terms":"aehyaejhu",
"employee":"xyz company",
"employer":"mr. xyz",
"price":"5000000.00",
"dp":"2500000.00",
"remained":"2500000.00",
"tax":"10.00",
"start":"2019-10-28T00:00:00.000000Z",
"ends":"2019-12-26T00:00:00.000000Z",
"status":"on hold",
"tracks":[
{
"id":2,
"user_id":1,
"invoice_id":1,
"image":"http:\/\/.....test\/images",
"body":"this is second one."
}
],
"created_at":"2019-10-27 09:43:14",
"updated_at":"2019-10-27 09:43:14"
}
]
Обновление 2
Вот так выглядит моя строка поиска.
<ion-searchbar [(ngModel)]="terms" placeholder="{{ 'SEARCH.find_invoice' | translate }}"></ion-searchbar>
Обновление 3
В обоих контроллерах яесть это,
descending = false;
order: number;
column = 'name';
terms = '';
sort() {
this.descending = !this.descending;
this.order = this.descending ? 1 : -1;
}
И в обоих видах products
, invoices
У меня есть это,
<ion-row>
<ion-col size="8" offset="2">
<ion-searchbar [(ngModel)]="terms" placeholder="{{ 'SEARCH.find_invoice' | translate }}"></ion-searchbar>
</ion-col>
</ion-row>
<div *ngIf="terms else Items">
<ion-button float-right fill="outline" size="default" type="button" (click)="sort()">
<ion-icon name="funnel"></ion-icon>
{{ 'SEARCH.sort' | translate }}
</ion-button>
<ion-list>
<ion-item *ngFor="let p of invoices | search : terms | sort: {property: column, order: order}" routerDirection="forward" [routerLink]="['/', 'tracks', p.user_id, p.id]">
<!-- show items details -->
<ion-thumbnail slot="start">
<ion-img [src]="p.image"></ion-img>
</ion-thumbnail>
<ion-label>{{ p.name }}</ion-label>
</ion-item>
</ion-list>
</div>
<ng-template #Items>
show ordinary list when user not searching
</ng-template>
Примечание: единственная разница между моими products
и invoices
список поиска это строка *ngFor="let p of invoices | ....
*ngFor="let p of products | ....