ngOnInit () не ожидает асинхронных вызовов, поэтому вы можете сделать следующее:
...
this.myObs$: Observable<any>;
ngOnInit() {
this.myObs$ = this.apiServices.getLineChart(this.coinId).pipe(map(resc => {
let randomNUMber: number[] = [];
for (let i =0 ; i < 8 ; i++) {
randomNUMber.push(Number(resc.data[i].price));
}
return randomNUMber;
}));
}
Если вы используете ngAfterViewInit, я думаю, вам нужно правильно отобразить эти данные в вашем шаблоне. Поэтому вам нужно использовать асинхронный канал для подписки на this.myObs $
<div *ngIf="(myObs$ | async) as randomNUMber">
<p *ngFor="let number of randomNUMber">
{{ number }}
</p>
</div>
См. Асинхронный канал