Angular 2 - графический интерфейс не обновляется при изменении модели в Promise

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

Service : 

getPage(pageNo) {
  return new Promise ((resolve, reject) {
    this.http.get(this.dataGetPageUrl+"/" + pageNo)
      .map(response => response.json())
      .subscribe(
        blocks => {
          resolve(blocks);
        },
        error => console.log(error)
      );
  })
}


Component: 

Service.getPage(1).then(function(data) {
  this.model = data;
}).catch(function(error) {

})

person hung.dev    schedule 23.12.2016    source источник


Ответы (1)


Поскольку function this. не указывает на текущий класс. Вместо этого используйте ()=> (функция стрелки):

Service.getPage(1).then((data) => {
  this.model = data;
}).catch((error) => {
person Günter Zöchbauer    schedule 23.12.2016
comment
Я уже использую ваш код, он показывает правильную длину данных, но не отображает данные списка с помощью ngFor. - person hung.dev; 23.12.2016
comment
Какая-то ошибка в консоли? Как выглядит код для *ngFor? - person Günter Zöchbauer; 23.12.2016
comment
У него нет ошибки, он показывает, что длина массива равна 10, и отображает 10 строк, но данные в каждой ячейке пусты, но данные в модели не пусты. Вот код ngFor. Извините, я не знаю, как форматировать: - person hung.dev; 23.12.2016
comment
Вы не можете форматировать код в комментариях. Вы можете обернуть одиночные обратные кавычки `, чтобы убедиться, что он отображается как код. Лучше отредактировать вопрос и добавить туда код. - person Günter Zöchbauer; 23.12.2016
comment
Трудно сказать, почему это не отображается. Я думаю, что для воспроизведения потребуется Plunker. - person Günter Zöchbauer; 23.12.2016
comment
Извините, это моя ошибка, теперь все работает, большое спасибо за вашу помощь - person hung.dev; 23.12.2016