2016-07-20 16 views
1

Ich habe diese ngFor(Ionic/Angular 2) Dienst in NgFor aufrufen?

<ion-card *ngFor="let review of reviews"> 
     <ion-card-content> 
      {{getUserName(review.user_ID)}} 
     </ion-card-content> 
    </ion-card> 

Ich brauche den Benutzernamen zu zeigen, aber ich Benutzernamen erhalten müssen Benutzerdienst anrufen, um den Benutzernamen zu erhalten. Das Problem ist, wenn ich so versuche. Die Seite wird geladen und geladen. Wie kann der Dienst in ngFor korrekt aufgerufen werden?

Das ist meine getUserName Methode:

getUserName(userId) 
    { 
     this.userService.loadUserById(userId) 
     .then(dataUser => { 
      this.user = dataUser; 
     }); 

     return this.user; 
    } 

Und wenn ich das Objekt, wie wie die Objekteigenschaft zuzugreifen in html? (Beispiel: user.firstName) Dank ..

+0

Wie sieht Ihre 'loadUserById' Methode aus? – rinukkusu

Antwort

1

Sie würden einige Cache mindestens brauchen nicht für jede Änderung Erfassungszyklus an den Server zu rufen, das heißt, wenn getUsername(review.uer_ID) genannt wird, wie zum Beispiel in What is the correct way to share the result of an Angular 2 Http network call in RxJs 5? erklärt

Ein besserer Weg wäre zu holen alle Benutzernamen für alle reviews im Voraus und machen sie als Array zur Verfügung, die Sie nach innen binden *ngFor.

Es wird davon abgeraten, Methoden aufzurufen, die teuer sind oder Nebenwirkungen aufgrund von Templates haben, da sie äußerst ineffizient sind.

+0

Danke, ich habe meinen Backend-Code geändert, damit ich nur Daten von Bewertungen abrufen kann. – Sky