MatSort e MatPaginator não funcionam sem setTimeOut

Eu tenho dados provenientes de um ponto de extremidade e os colocamos em MatTableDataSource. Consegui fazê-lo funcionar para MatSort e MatPaginator, mas precisava usar setTimeOut, o que não parece ser uma maneira adequada de fazer isso. Se eu remover isso, ele reclamará que 'Não é possível ler a propriedade de classificação indefinida', assumi que isso se deve ao fato de ainda não ter sido inicializado.

Eu também tentei:

para movê-lo para o afterviewinit, mas os dados foram carregados após o afterviewinit ser chamado para que ainda não funcioneusing this.changeDetectorRef.detectChanges () após this.datasource = new ... também não funciona

Este é o meu código atual (que está funcionando, mas usando settimeout)

<div *ngIf="!isLoading">
    <div *ngFor="let record of renderedData | async" matSort>

    // ... some html to show the 'record'

    <mat-paginator #paginator
        [pageSizeOptions]="[5, 10, 20]">
    </mat-paginator>
</div>

O component

export class ResultsComponent implements OnInit, OnDestroy, AfterViewInit {
    dataSource: MatTableDataSource<any> = new MatTableDataSource();
    renderedData: Observable<any>;

    @ViewChild(MatPaginator) paginator: MatPaginator;
    @ViewChild(MatSort) sort: MatSort;

    constructor(some service) {}

    ngOnInit() {
        const accountId = someOtherService.getAccountId();
        this.someService.getData(accountId)
            .subscribe((myData) => {
                    this.dataSource = new MatTableDataSource(myData);

                    // it won't work properly if it is not wrapped in timeout
                    setTimeout(() => {
                        this.dataSource.paginator = this.paginator;
                        this.sort.sort(<MatSortable>({id: 'created_on', start: 'desc'}));
                        this.dataSource.sort = this.sort;
                    });

                    this.renderedData = this.dataSource.connect();
                }
            });
    }

    ngAfterViewInit() {
    }

    ngOnDestroy(): void {
        if (this.dataSource) { this.dataSource.disconnect(); }
    }
}

O código acima está funcionando para mim, estou apenas procurando o caminho certo para não usar settimeout, se possíve

questionAnswers(1)

yourAnswerToTheQuestion