У меня есть следующий класс. Я хотел бы преобразовать функцию filterOutEmails для использования array.some
вместо текущего кода.
export class UsertableComponent {
dataSource: MatTableDataSource<TrialUser>;
createTableFromServer = (data: TrialUsers[], emailDomains:string) => {
this.dataSource = new MatTableDataSource(data);
this.dataSource.filterPredicate = this.filterOutEmails
}
filterOutEmails = (row: TrialUser, emailDomains: string): boolean => {
const listofFilters = emailDomains.split(',');
for (let i = 0; i < listofFilters.length; i++){
if (row.email.toLowerCase().includes(listofFilters[i].trim())){
return true;
};
}
return false;
}
}
Я попытался сделать следующее, но он дал this
, когда я пытался использоватьФункция стрелки, я не мог пройти в ряду. (Если я не установил this: TrialUser
в качестве параметра, тогда «this» соответствует Type UsertableComponent, классу, в котором находится функция, даже если я передаю row
в some
как thisObject)
private determineIfRowShouldBeShown(this: TrialUser, domain: string): boolean {
const row: TrialUser = this;
return !row.email.toLowerCase().includes(domain.trim());
}
private filterOutEmails= (row: TrialUser, emailDomains: string): boolean {
const listofFilters = emailDomains.split(',');
return listofFilters.some(this.determineIfRowShouldBeShown, row) ;
}
}
Установка 'defineIfRowSHouldBeShown' в качестве встроенной функции жирной стрелки работает, но я хотел бы оставить определение функции отдельным.