список изменений порядка угловой 7 - PullRequest
0 голосов
/ 25 октября 2019

У меня есть этот код, который вызывает API для каждого объекта списка «заголовки» и добавить объект в другой список «groupDocs». но поскольку ответ API не является немедленным, порядок объектов изменяется в списке «groupDocs». что я должен сделать, чтобы сохранить тот же порядок?

Я не могу найти решение этой проблемы, и я новичок в angular.

public getDetails(titles: ErrorTitleData[]): void {
    for (const title of titles) {
        const showButtons: boolean = false;
        const details: controlErrordetailsData[] = [];
        const criteria: SearchCriteriaControlData = {
            aggFields: ['Famille', 'Sous-Famille', 'Date', 'Controle', 'erreur'],
            page: 0,
            step: 20,
            selectedValues: {},
            queryString: ''
        };

        criteria.selectedValues['Sous-Famille'] = [title.sf ? title.sf : ''];
        criteria.selectedValues['Date'] = [title.dateVerif ? title.dateVerif : ''];
        criteria.selectedValues['Controle'] = [title.typeVerif ? title.typeVerif : ''];

        this.controlErrorService.getErrorControl(criteria).subscribe(
            (data) => {
                data.hits.forEach(element => {
                    const detail: controlErrordetailsData = new controlErrordetailsData(element);
                    details.push(detail);
                });

                this.groupDocs.push(new GroupDoc(title, details, criteria, data.total));

            },
            (error) => {
                this.toastService.update(ToastService.TYPE_ERROR,
                    'Une erreur est survenue lors du chargement de la liste des contrôle d\'erreurs');
            }
        );
    }
}

1 Ответ

1 голос
/ 25 октября 2019

Как сказал Флориан , вы должны отсортировать список по заголовкам. Это можно сделать в коде TS:

this.groupDocs.push(new GroupDoc(title, details, criteria, data.total));
this.groupDocs = this.groupDocs.sort((doc1, doc2) => doc1.getTitle().localeCompare(doc2.getTitle()));

или, что гораздо лучше, с помощью пользовательского канала в шаблоне:

ngFor*="let doc of groupDocs | sortByTitle"

Вы можете получить представление о том, как создать такой канал в этом SO ответе . И не забудьте добавить трубу в массив угловых объявлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...