Angular 列表顺序更改为7

Angular 列表顺序更改为7,angular,typescript,angular7,Angular,Typescript,Angular7,我有一段代码,它为列表“titles”中的每个对象调用api,并将该对象添加到另一个列表“groupDocs”。但由于api的响应不是即时的,所以对象在列表“groupDocs”中的顺序会发生变化。我该怎么做才能保持同样的秩序 我找不到解决这个问题的办法,而且我是个新手 public getDetails(titles: ErrorTitleData[]): void { for (const title of titles) { const showButtons: b

我有一段代码,它为列表“titles”中的每个对象调用api,并将该对象添加到另一个列表“groupDocs”。但由于api的响应不是即时的,所以对象在列表“groupDocs”中的顺序会发生变化。我该怎么做才能保持同样的秩序

我找不到解决这个问题的办法,而且我是个新手

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');
            }
        );
    }
}
如前所述,您应该按标题对列表进行排序。这可以在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"

您可以了解如何创建这样的管道。不要忘记将管道添加到数组中。

什么是“订单更改”?新项目以随机位置出现?所需的行为是什么?您应该根据特定的排序规则对列表进行排序。当调试循环逐项启动时,它会调用“this.controlErrorService.getErrorControl(Criterias)”,在第五项中,我开始得到响应,第五个元素被添加到groupdocs列表中。我想要的是保持顺序。此行为会更改对象的顺序