Привет! Я новичок в Angular и в настоящее время работаю над способом сортировки массива, созданного с использованием * ngFor.
Я бы хотел использовать input
флажки для фильтрации. Например, я установил свойства объектов ...
PersonalInvestment: boolean;
Это для определения типа, но исходя из того, что это логическое значение, я бы хотел показать или скрыть объект из массива. Я следовал курсу Деборы Кураты по Pluralsight и в своем уроке она фильтрует массив на основе строкового значения, которое она вводит в свою строку ввода.
Это код получения и установки, который она использует вместе со своей функцией для фильтрации:
get listFilter(): string {
return this._listFilter;
}
set listFilter(value: string) {
this._listFilter = value;
this.filteredProducts = this.listFilter ? this.performFilter(this.listFilter) : this.products;
}
и функция performFilter
далее в компоненте:
performFilter(filterBy: string): IProduct[] {
filterBy = filterBy.toLocaleLowerCase();
return this.products.filter((product: IProduct) =>
product.productName.toLocaleLowerCase().indexOf(filterBy) !== -1);
}
Итак, с моими ограниченными знаниями я попытался использовать аналогичный подход:
_personalFilter: boolean;
get personalFilter(): boolean {
return this._personalFilter;
}
set personalFilter(value: boolean){
this._personalFilter = value;
this.filteredBrands = this.personalFilter ? this.performFilter(this.personalFilter) : this.brands;
}
и моя функция:
performFilter(filterBy: boolean): Brands[] {
return this.brands.filter((brand: Brands) =>
brand.PersonalInvestment.valueOf = function () {
return this.filterBy;
});
}
В настоящее время я получаю эту ошибку:
![My Error](https://i.stack.imgur.com/7KKGS.png)
Я, очевидно, знаю, что мой код в корне неверен, но для меня это совершенно новая концепция, и мне пока ничего в StackOverflow не помогло. Огромное спасибо заранее.
EDIT:
Это мое поле ввода:
<input type="checkbox" name="Personal" value="Personal" [(ngModel)]="personalFilter"/> Personal<br />
и это начало div для * ngFor:
<div *ngFor="let brand of filteredBrands">