2017-02-21 5 views
0

У меня есть переменная, объявленная внутри компонента следующим образом,списки неопределен angular2

public listings: ListingSeller[]; 

я получаю данные из API и подталкивая к предыдущему массиву, используя Еогеасп внутри OnInit, но он говорит, списки неопределен ,

this.eventService.getListingsByEventId(this.eventId).subscribe(listresults => { 
      this.bindListing(listresults); 
     }, error => this.errorMessage = error); 
    } 
    bindListing(listres: any[]) { 
     listres.forEach(function (data) { 
      data.ticket.seating.forEach(function(seat:any) { 
       this.listings.push(data); 
      }); 
     }) 
    } 
+0

обновление пост с ** ** ListingSeller свойства интерфейса – Aravind

ответ

1

Вы определили тип, но не создать экземпляр, так что вы не можете нажать на него еще как ссылка еще не определено.

public listings: ListingSeller[] = []; 

устранит проблему. (добавление = [];), так как это создает пустой массив.

Также вам необходимо использовать arrow function, чтобы this указывал на правильный экземпляр, в котором выполняется код, а не в окне браузера.

this.eventService.getListingsByEventId(this.eventId).subscribe(listresults => { 
      this.bindListing(listresults); 
     }, error => this.errorMessage = error); 
    } 
    bindListing(listres: any[]) { 
     listres.forEach((data) => { // use arrow function HERE 
      data.ticket.seating.forEach((seat:any) => { // AND HERE 
       this.listings.push(data); 
      }); 
     }) 
    } 
+0

он не работает, не может читать собственности «списки» неопределенных – user2280016

+1

@ user2280016 - см обновление, вам нужно использовать 'arrow' функции ИЛИ получить ссылку на 'this', чтобы использовать внутри' function'. – Igor