如何从HttpClient url的数组中推送数据?



我还是一个编程新手,如果这个问题可能很愚蠢,我很抱歉。

但是我想知道如何保存数据从"get(url)"在数组中。一旦数据在数组中,我想做数组的长度但当我执行console.log检查值和长度时使用array.length它总是显示&;0&;

实际上,在检索数组的长度之后,我将创建一个方法来检索随机值以显示随机faceSnap。

我的问题是在函数:showOneFaceSnap()

import { Observable, Subject, Subscription } from 'rxjs';
import { FaceSnap } from './../models/face-snap.model';
import { Injectable } from "@angular/core";
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root' //on renregistre ce service à la racine de l'application
})
export class FaceSnapService {

// newFaceSnap$ = new Observable<FaceSnap[]>();
constructor(private http:HttpClient){
}
getAllFaceSnaps(): Observable<FaceSnap[]>{
// return this.faceSnaps;
return this.http.get<FaceSnap[]>('http://localhost:3000/facesnaps');
}
getFaceSnapById(faceSnapId: number): Observable<FaceSnap>{
// const faceSnap = this.faceSnaps.find(faceSnap => faceSnap.id===faceSnapId)
return this.http.get<FaceSnap>(`http://localhost:3000/facesnaps/${faceSnapId}`);
}

showOneFaceSnap(){
const faceTab = [];
this.http.get<FaceSnap[]>('http://localhost:3000/facesnaps').subscribe(facesnaps=> 
facesnaps.forEach(data=> faceTab.push(data)) );

console.log("array ",faceTab, "array length ", faceTab.length );
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>

正如RSD所提到的,数据在订阅

中可用。
let faceTab = [];
this.http.get<FaceSnap[]>('http://localhost:3000/facesnaps').subscribe(data=> 
{
faceTab = data;
console.log(faceTab);
});

最新更新