Я перебираю список вакансий, и в этом списке реализован поиск.
Поиск работает, но теперь он фильтрует список только по одному полю.
Вот мой список:
<ion-card *ngFor="let job of allJobs | search : searchTerm">
<ion-grid>
<ion-row>
<ion-col>
<div>
<span> {{job.day | uppercase}}</span>
<span> {{job.month | uppercase}}</span>
</div>
</ion-col>
<ion-col>
<div>
<span>{{job.time}}</span>
<span>{{job.name}}</span>
</div>
</ion-col>
</ion-row>
</ion-grid>
</ion-card>
Я сделал трубу для реализации поиска. Вот код для этого.
transform(items: any[], terms: string): any[] {
if(!items) return [];
if(!terms) return items;
terms = terms.toLowerCase();
return items.filter( it => {
return it.name.toLowerCase().includes(terms); // only filter name
});
}
Теперь список фильтруется только по полю name
. Я хочу отфильтровать список по day
, month
и time
.
Может кто-нибудь сказать мне, как это сделать?
Пример данных для рабочих мест. Работа - это массив объектов
[
{
"id":10,
"day":"Monday",
"month":"June",
"time":"10",
"name":"John",
"email":"john@gmail.com"
},
{
"id":11,
"day":"Tuesday",
"month":"May",
"time":"12",
"name":"Jane",
"email":"jane@gmail.com"
},
{
"id":12,
"day":"Friday",
"month":"June",
"time":"16",
"name":"",
"email":"john@gmail.com"
},
{
"id":13,
"day":"Tuesday",
"month":"August",
"time":"21",
"name":"",
"email":"kevin@gmail.com"
},
{
"id":14,
"day":"Saturday",
"month":"December",
"time":"12",
"name":"Sam",
"email":"sam@gmail.com"
},
]
А searchTerm
- это просто строка.
Как вы можете видеть, в примере данных больше полей, чем в HTML, но я пытаюсь искать только те поля, которые отображаются в HTML. Некоторые поля могут иметь нулевые значения (например, name
в примере данных имеет два нулевых значения)
Я попробовал уже предоставленные решения, но ни одно из них не отвечает моим требованиям.
P.S: Где-то читал, что каналы - не лучший вариант для такой функциональности. Я готов реализовать эту логику и в классе.