Angular 2 - 在 Promise 中更改模型时 GUI 不会更新

Posted

技术标签:

【中文标题】Angular 2 - 在 Promise 中更改模型时 GUI 不会更新【英文标题】:Angular 2 - GUI not update when change model in Promise 【发布时间】:2017-05-09 08:34:38 【问题描述】:

我编写了一个服务返回一个承诺,在组件中我调用服务并将模型设置为从承诺的成功函数返回的数据,模型已更改但 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) 

)

【问题讨论】:

【参考方案1】:

因为function this. 没有指向当前类。改用()=>(箭头函数):

Service.getPage(1).then((data) => 
  this.model = data;
).catch((error) => 

【讨论】:

我已经使用了你的代码,它显示了正确的数据长度结果,但没有使用 ngFor 呈现列表数据。 控制台有错误吗? *ngFor 的代码是什么样子的? 您不能在 cmets 中格式化代码。您可以用单个反引号 ` 包装,以确保将其呈现为代码。最好编辑问题并在那里添加代码。 很难说为什么它没有被渲染。我认为这需要 Plunker 才能重现。 对不起,这是我的错误,现在可以使用,非常感谢您的帮助

以上是关于Angular 2 - 在 Promise 中更改模型时 GUI 不会更新的主要内容,如果未能解决你的问题,请参考以下文章

路由更改在 Promise 回调函数中不起作用

停止 angular-ui-router 导航,直到 promise 解决

Angular 数据绑定不适用于 async/await,但它适用于 Promise

Angular 2:将 Observable 转换为 Promise

[Angular 2] Using Promise to Http

Promise Chaining / Cascading to RxJS angular 1 to angular 2