Углеродные 2 фильтрационные данные с использованием труб

У меня такая сложная структура данных (некоторые вкладки с таблицами 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,

0

Ответов: 0

Углеродные 2 фильтрационные данные с использованием труб

У меня такая сложная структура данных (некоторые вкладки с таблицами 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, угловая, машинопись,
Похожие вопросы