У меня такая сложная структура данных (некоторые вкладки с таблицами IP-адресов как контент):
tabs : [
{
data: [
{ ip: '', vms: [ { hostname: 'some'}, { hostname: 'some2'} ] },
{ ip: '', vms: [....] }
],
name: 'tab1',
},
{...}
]
Теперь я хочу отфильтровать поле имени хоста.
Я написал код:
export class VMsTabFilterPipe implements PipeTransform {
transform(items: any[], filterValue: string): any {
console.log(filterValue)
if(filterValue == undefined || filterValue == '') {
console.log(items)
return items;
}
filterValue = filterValue.toLowerCase();
return items.filter(item => {
let found = false;
item.data = item.data.filter(record => {
for(let vm of record.vms) {
if(String(vm.hostname).toLowerCase().indexOf(filterValue) !== -1) {
found = true;
return true;
}
}
});
if(found) {
return item;
}
});
};
}
шаблон
<ngb-tab *ngFor="let tab of data | vmsTabFilter:filterValue; let i = index" [class.active]="tab.active" title="{{tab.name}}">
<template ngbTabContent>
<my-table [data]="prepareData(tab.data)" [defaultSort]="1"></my-table>
</template>
</ngb-tab>
Кажется, что фильтрация вкладок правильно, но строки в таблице с IP-адресами плохо фильтруются. Что я делаю неправильно?
javascript,angular,typescript,
У меня такая сложная структура данных (некоторые вкладки с таблицами IP-адресов как контент):
tabs : [
{
data: [
{ ip: '', vms: [ { hostname: 'some'}, { hostname: 'some2'} ] },
{ ip: '', vms: [....] }
],
name: 'tab1',
},
{...}
]
Теперь я хочу отфильтровать поле имени хоста.
Я написал код:
export class VMsTabFilterPipe implements PipeTransform {
transform(items: any[], filterValue: string): any {
console.log(filterValue)
if(filterValue == undefined || filterValue == '') {
console.log(items)
return items;
}
filterValue = filterValue.toLowerCase();
return items.filter(item => {
let found = false;
item.data = item.data.filter(record => {
for(let vm of record.vms) {
if(String(vm.hostname).toLowerCase().indexOf(filterValue) !== -1) {
found = true;
return true;
}
}
});
if(found) {
return item;
}
});
};
}
шаблон
<ngb-tab *ngFor="let tab of data | vmsTabFilter:filterValue; let i = index" [class.active]="tab.active" title="{{tab.name}}">
<template ngbTabContent>
<my-table [data]="prepareData(tab.data)" [defaultSort]="1"></my-table>
</template>
</ngb-tab>
Кажется, что фильтрация вкладок правильно, но строки в таблице с IP-адресами плохо фильтруются. Что я делаю неправильно?
00JavaScript, угловая, машинопись,