У меня есть угловая таблица материалов с фильтрацией на стороне клиента, в которой я получаю данные из службы.В то время как мои фильтры работали с жестко закодированными данными, я получаю сообщение об ошибке: «Невозможно установить свойство filterPredicate» неопределенного с тех пор, как я переключился на получение данных из службы.Данные отображаются в моей таблице правильно, но я не могу их отфильтровать.
export class MessageTableComponent implements OnInit {
datasource: any;
}
ngOnInit() {
this.messageService.getMessageTableData().subscribe(
response => {
this.dataSource = new MatTableDataSource(response);
console.log(response);
}
);
this.RequestIdFilter.valueChanges.subscribe((RequestIdFilterValue) => {
this.filteredValues['RequestID'] = RequestIdFilterValue;
this.dataSource.filter = JSON.stringify(this.filteredValues);
});
this.RequestStatusFilter.valueChanges.subscribe((RequestStatusFilterValue) => {
this.filteredValues['RequestStatus'] = RequestStatusFilterValue;
this.dataSource.filter = JSON.stringify(this.filteredValues);
});
this.RequestorNameFilter.valueChanges.subscribe((RequestorNameFilterValue) => {
this.filteredValues['RequestorName'] = RequestorNameFilterValue;
this.dataSource.filter = JSON.stringify(this.filteredValues);
});
this.ApproverNameFilter.valueChanges.subscribe((ApproverNameFilterValue) => {
this.filteredValues['ApproverName'] = ApproverNameFilterValue;
this.dataSource.filter = JSON.stringify(this.filteredValues);
});
this.SubjectFilter.valueChanges.subscribe((SubjectFilterValue) => {
this.filteredValues['Subject'] = SubjectFilterValue;
this.dataSource.filter = JSON.stringify(this.filteredValues);
});
this.MessageStatusFilter.valueChanges.subscribe((MessageStatusFilterValue) => {
this.filteredValues['MessageStatus'] = MessageStatusFilterValue;
this.dataSource.filter = JSON.stringify(this.filteredValues);
});
this.SubmissionFromDateFilter.valueChanges.subscribe((SubmissionFromDateFilterValue) => {
this.filteredValues['SubmissionFromDate'] = SubmissionFromDateFilterValue;
this.dataSource.filter = JSON.stringify(this.filteredValues);
});
this.SubmissionToDateFilter.valueChanges.subscribe((SubmissionToDateFilterValue) => {
this.filteredValues['SubmissionToDate'] = SubmissionToDateFilterValue;
this.dataSource.filter = JSON.stringify(this.filteredValues);
});
this.dataSource.filterPredicate = this.customFilterPredicate();
this.dataSource.sort = this.sort;
}
customFilterPredicate() {
.....
}
Ошибка, по-видимому, во второй последней строке.messageService - это служба, которую я использую для извлечения данных, а остальная часть кода предназначена для фильтрации данных в любое время, когда изменяется значение любого из столбцов.Ниже у меня есть функция customFilterPredicate, определяющая фильтры для каждого столбца.
Я не понимаю, в чем проблема.Я определил источник данных в ngOnInit, так почему возникает ошибка и как ее устранить?