Я пытаюсь использовать угловые таблицы данных для фильтрации данных, полученных с сервера, и я столкнулся с проблемой. Поиск не работает (без сообщений об ошибках) при переборе объектов в подписке, но работает при простом присвоении значений моему массиву объектов.
Я пробовал несколько различных реализаций, которые я нашел в сети, но ни одна из них не показаласьработать или не были достаточно конкретны.
Так что это рабочий код (credit.component.ts):
getCreditList() {
this.creditService.getCreditList().subscribe(credits => {
this.credits = credits;
console.log(this.credits); //outputs all credits as array of objects
this.dtTrigger.next();
});
}
Но при попытке отфильтровать данные в обещании, дажеесли отображаемые данные верны, функциональность поиска угловых таблиц данных не работает:
this.creditService.getCreditList().subscribe(credits => {
credits.forEach((obj, index) => {
if (obj.deleted_at == null) {
this.credits.push(credits[index]);
}
});
console.log(this.credits); // outputs all credits as array of objects where objects deleted_at property equals null
this.dtTrigger.next();
});
}
В случае необходимости дополнительного кода вот соответствующий credit.component.html:
<table datatable [dtOptions]="dtOptions" class="row-border hover">
<thead>
<tr>
<th>ID</th>
<th>credit</th>
</tr>
</thead>
<tbody>
<tr
*ngFor="let credit of credits; let i = index"
class="col-12 table-row_{{ i }}"
>
<td>
{{ credit.userid }}
</td>
<td>
{{ credit.credit }}
</td>
</tr>
</tbody>
</table>
Связанный credit.service.ts:
getCreditList() {
return this.http.get<Credit[]>(this.url + 'credit');
}
Класс кредита:
export class Credit {
id: number;
credit: number;
deleted_at: Date;
}
Я ожидаю, что смогу выполнить поиск с предварительно отфильтрованными данными, как в рабочем примере.
Если бы кто-нибудь мог пролить свет на эту тайну, он был бы очень признателен.
Спасибо!
Редактировать:
Нумерация страниц не делает 'Кажется, тоже не работает, гнезависимо от вышеупомянутых кодов. Я начинаю задаваться вопросом, может быть, проблема в асинхронном вызове, так как данные отображаются слишком поздно или что-то в этом роде? Как бы я решил это? Любая помощь будет оценена.