Поиск в 8-ой таблице данных не работает должным образом - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь использовать угловые таблицы данных для фильтрации данных, полученных с сервера, и я столкнулся с проблемой. Поиск не работает (без сообщений об ошибках) при переборе объектов в подписке, но работает при простом присвоении значений моему массиву объектов.

Я пробовал несколько различных реализаций, которые я нашел в сети, но ни одна из них не показаласьработать или не были достаточно конкретны.

Так что это рабочий код (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;
}

Я ожидаю, что смогу выполнить поиск с предварительно отфильтрованными данными, как в рабочем примере.

Если бы кто-нибудь мог пролить свет на эту тайну, он был бы очень признателен.

Спасибо!

Редактировать:

Нумерация страниц не делает 'Кажется, тоже не работает, гнезависимо от вышеупомянутых кодов. Я начинаю задаваться вопросом, может быть, проблема в асинхронном вызове, так как данные отображаются слишком поздно или что-то в этом роде? Как бы я решил это? Любая помощь будет оценена.

1 Ответ

0 голосов
/ 22 октября 2019

Я знаю, что это плохая практика, но для меня это работает, если я поставлю триггер на тайм-аут, как это:

setTimeout(() => {
   this.dtTrigger.next()
}, 1);
...