Angular 2 - GUI ไม่อัปเดตเมื่อเปลี่ยนโมเดลใน Promise

ฉันเขียนบริการส่งคืนสัญญา และในองค์ประกอบที่ฉันเรียกใช้บริการและตั้งค่าโมเดลเป็นข้อมูลที่ส่งคืนจากฟังก์ชันความสำเร็จของสัญญา โมเดลมีการเปลี่ยนแปลง แต่ GUI ไม่ได้รับการอัพเดต ฉันจะแก้ไขปัญหานี้ได้อย่างไร

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
คุณไม่สามารถจัดรูปแบบโค้ดในความคิดเห็นได้ คุณสามารถรวม backticks เดี่ยวๆ ` เพื่อให้แน่ใจว่าจะแสดงผลเป็นโค้ด ควรแก้ไขคำถามและเพิ่มโค้ดที่นั่นจะดีกว่า - 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