Я хотел бы знать, как работает метод setFilter для EntityCollectionService в @ ngrx / data.Документация указывает на то, как она используется, но нет примера, показывающего фактическую используемую функцию setFilter (pattern: any).Поскольку аргумент может быть любого типа, я не могу сделать вывод, что здесь нужно сделать.
По сути, у меня есть список объектов в хранилище данных с использованием модуля @ ngrx / data.Я хотел бы определить фильтр, чтобы я мог подписаться на FilterEntities $ observable EntityCollectionService.Я могу успешно подписаться на сущности $ observable и получить полный нефильтрованный список.Раньше я выполнял фильтрацию вне EntityCollectionService, но я хотел бы использовать встроенный механизм фильтрации.
export class MyComponent implements OnInit {
filteredProjects$: Observable<Project[]>;
typeFilterOptions: FilterOption[];
stageFilterOptions: FilterOption[];
constructor(private projectService: ProjectEntityService, ptivate metadataService: MetadataService) {}
ngOnInit() {
this.typeFilterOptions = this.metadataService.getProjectTypes();
this.stageFilterOptions = this.metadataService.getProjectStages();
this.filteredProjects$ = this.projectService.filteredEntities$;
}
onFilterChange() {
typeFilter = typeFilterOptions.filter(option => option.isChecked).map(option.name);
stageFilter = stageFilterOptions.filter(option => option.isChecked).map(option.name);
this.projectService.setFilter(project => {
return (typeFilter.indexOf(project.type) >= 0) &&
(stageFilter.indexOf(project.stage) >= 0);
}
}
}
Приведенный выше код - мой лучший подход при попытке установить фильтр правильно.Очевидно, что это не работает, как я ожидал.При установке фильтра на функцию фильтра ничего не меняется, хотя я вижу, как срабатывает действие set filter
, как и ожидалось.Объекты все еще не фильтруются в этой точке.Аргумент, помеченный как pattern: any
, заставляет меня думать, что это должно быть что-то отличное от функции, но опять же я не могу вывести из документации то, что он ожидает.