J'ai un tableau de sections et j'essaie d'obtenir et d'afficher tous les éléments sous chaque section. Cela semble être une prise assez simple. Voici mon code:Comment faire une boucle sur un observable dans Angular 4
//my ngOnInit call this function
this.sectionService.GetItemList(this.selectedSectionList, this.culture)
.subscribe(
(itemList: ItemBySection[]) => {
this.itemBySection = itemList;
this.loaded = true;
},
(error: any) => this.errorMessage = error,() =>
console.log("loaded")
);
//this is my function in my service
public GetItemList(SectionItems: Sections[], strCulture): Observable<ItemBySection[]> {
let resultObservable
for (var SectionItem in SectionItems) {
let url = environment.portalWebServiceURL + "api/section/" + SectionItems[SectionItem].sectionItemID.toString() + "/" + strCulture;
resultObservable = this.http.get(url)
.catch(this.handleError)
.mergeMap(res => <ItemBySection[]>res.json());
}
return resultObservable;
}
Peut-être que mon explication ci-dessus était pas trop claire Donc ce que je suis en train de faire est d'appeler mon service web plusieurs fois dans une boucle et concaténer le résultat dans une liste. Peut-être que cela aidera.
for all my sectionIDs {
call url web service with sectionID
receive results from server
add the results in my item array
}
finally display all items.
J'espère que cette aide.
Si j'utilise la carte que le système récupère les éléments de la première section mais si j'utilise mergeMap, j'obtiens cette erreur "Impossible de trouver un objet support différent '[object Object]' de type 'object' NgFor ne supporte que la liaison aux Iterables tels que les tableaux." Je veux juste afficher tous les éléments pour toutes les sections sélectionnées. Cela a-t-il du sens? Comment fusionner ou concaténer tous les enregistrements que je reçois de mon service Web en 1 observable? –
Ok, maintenant je n'ai pas compris vos besoins, mais votre code fait quelque chose de dirrefent: chaque boucle de SectionItems que vous écrasez la variable resultObservable. J'essaie de mettre à jour ma réponse en conséquence :) –
C'était super merci Lorenzo. Votre réponse a séparé chaque appel en tableaux. Je dois juste comprendre comment concaténer ces tableaux. Je pense que je devrais être capable de comprendre cela. Merci encore. –