2016-07-20 7 views
1

я это ngFor(Ионный/Угловой 2) Услуга вызова в NgFor?

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

Мне нужно, чтобы показать имя пользователя, но, чтобы получить имя пользователя, мне нужно, чтобы позвонить в службу пользователя, чтобы получить имя пользователя. Проблема в том, когда я пытаюсь это сделать. Страница сохраняет загрузку и загрузку. Каков правильный способ вызова службы внутри ngFor?

Это мой метод GetUserName:

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

     return this.user; 
    } 

И когда я получаю объект как получить доступ к свойству объекта, как в HTML? (Пример: user.firstName). Спасибо ..

+0

Как выглядит ваш метод loadUserById? – rinukkusu

ответ

1

Вы, по крайней мере, нужен кэш, чтобы не вызывать на сервер для каждого цикла обнаружения изменений, который когда getUsername(review.uer_ID) называется, как, например, описано в What is the correct way to share the result of an Angular 2 Http network call in RxJs 5?

Лучше всего было бы принести все имена пользователей для всех reviews заранее и сделать их доступными как массив, который вы связываете внутри *ngFor.

Методы вызова, которые являются дорогостоящими или имеют побочные эффекты от шаблонов, сильно обескуражены, потому что они крайне неэффективны.

+0

Спасибо, я изменил свой код, чтобы получить данные только из отзывов. – Sky

Смежные вопросы