Angular 2 - GUI tidak diperbarui saat mengubah model di Promise

Saya menulis layanan mengembalikan janji, dan dalam komponen saya memanggil layanan dan mengatur model ke pengembalian data dari fungsi sukses janji, model diubah tetapi GUI tidak diperbarui. Bagaimana saya bisa mengatasi masalah ini.

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 sumber


Jawaban (1)


Karena function this. tidak menunjuk ke kelas saat ini. Gunakan ()=> (fungsi panah) sebagai gantinya:

Service.getPage(1).then((data) => {
  this.model = data;
}).catch((error) => {
person Günter Zöchbauer    schedule 23.12.2016
comment
Saya sudah menggunakan kode Anda, ini menunjukkan hasil panjang data yang benar tetapi tidak merender data daftar dengan ngFor. - person hung.dev; 23.12.2016
comment
Ada kesalahan di konsol? Bagaimana tampilan kode untuk *ngFor? - person Günter Zöchbauer; 23.12.2016
comment
Tidak ada kesalahan, ini menunjukkan panjang array adalah 10, dan merender 10 baris, tetapi data di setiap sel kosong, tetapi data dalam model tidak kosong. Ini kodenya ngFor. Maaf saya tidak tahu cara memformat: - person hung.dev; 23.12.2016
comment
Anda tidak dapat memformat kode di komentar. Anda dapat membungkusnya dalam satu backticks ` untuk memastikannya dirender sebagai kode. Lebih baik edit pertanyaan dan tambahkan kode di sana. - person Günter Zöchbauer; 23.12.2016
comment
Sulit untuk mengatakan mengapa itu tidak dirender. Saya pikir itu memerlukan Plunker untuk bereproduksi. - person Günter Zöchbauer; 23.12.2016
comment
Maaf, Ini kesalahan saya, Ini berfungsi sekarang, terima kasih banyak atas bantuan Anda - person hung.dev; 23.12.2016