Angular6: фильтрация элементов списка, соответствующих свойству - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу отфильтровать источник данных моей угловой таблицы, отображая только элементы , которые имеют определенное свойство groupId .

component.html

 <mat-table [dataSource]="groupSource |  filter : currentGroupId"></mat-table>

filter.pipe.ts

import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
  name: 'filter'
})
// return items of a group
export class FilterPipe implements PipeTransform {

  transform(group: any[], currentGroupId: number): any[] { 

    return group.filter( item=> item.groupId = currentGroupId);

    }
}

Однако я получаюэта ошибка:

ОШИБКА TypeError: group.filter не является функцией
в FilterPipe.push ../ src / app / filter.pipe.ts.FilterPipe.transform (filter.pipe.ts: 9)
в checkAndUpdatePureExpressionInline (core.js: 9949)
в checkAndUpdateNodeInline (core.js: 10518)
в checkAndUpdateNode (core.js: 10476)
в coreugpNate.js: 11109)
в debugCheckDirectivesFn (core.js: 11069)
в Object.eval [как updateDirectives] (BasketComponent.html: 144)
в Object.debugUpdateDirectives [как updateDirectives] (core.jss: 11061)
в checkAndUpdateView (core.js: 10458)
в callViewAction (core.js: 10699)

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Вы пытаетесь использовать метод filter для Array, когда предоставляемый вами источник данных, скорее всего, является экземпляром MatTableDataSource, который НЕ является массивом.Фактически, MatTableDataSource имеет свойство фильтра, которое должно быть строкой.

Однако вы захотите использовать функцию filterPredicate MatTableDataSource.

Прочтите документацию для правильногоспособ фильтрации источника данных материала.

0 голосов
/ 20 сентября 2018

Проблема заключается в проверке равенства. Должно быть

 return group.filter( item=> item.groupId === currentGroupId);
...