【问题标题】:Angular CLI HTTP Client Get data but not refreshing objectAngular CLI HTTP 客户端获取数据但不刷新对象
【发布时间】:2019-05-20 21:04:19
【问题描述】:

我正在开发 Angular cli 7 程序 我使用 Httpclient 从 Web Api .net 读取数据 我在服务器上的方法返回 json 值

getTicket(ticketId: number) {
return this.http.get<TicketModel>(
  SERVERURL/ticketId}
).pipe(map(res => res["result"] as TicketModel));

}

//为绑定创建对象模型

  selectedTicket: TicketModel = new TicketModel();

//调用getticket方法并设置在selectedTicket对象上

        this.accountService.getTicket(ticketId).subscribe(res => this.selectedTicket = res);

服务获取数据但不刷新this.selectedTicket 我最常点击 UI 或其他按钮来刷新对象

<ul class="list-inline">
   <li>
     <i class="fa fa-calendar-alt kt-font-brand "></i>
     <span style="color:#a7abc3;">تاریخ :
     </span>
     <span> {{selectedTicket.requestTime | agoTime}}
     </span>
   </li>

   <li>
      <i class="fa fa-briefcase kt-font-brand"></i>
      <span style="color: #a7abc3;">واحد : </span>
      <span>{{selectedTicket.departmentName}}</span>
   </li>

【问题讨论】:

  • 需要所有相关代码!并以代码而不是图像的形式采样 JSON!

标签: c# angular


【解决方案1】:

很难确定,因为您尚未发布组件的代码。但是,如果您使用 changeDetectionStrategy OnPush,那么如果您没有将 ChangeDetectorRef 注入组件并在需要重新呈现模板时使用它的 markForCheck 方法,就会发生这种情况。

所以,首先将它添加到组件的构造函数参数中:

 private changeDetectorRef: ChangeDetectorRef

然后更改将 this.selectedTicket 设置为此的代码:

this.accountService.getTicket(ticketId).subscribe(res => {
  this.selectedTicket = res;
  this.changeDetectorRef.markForCheck()
);

【讨论】:

  • 如果您将票证模型作为输入传递给另一个组件,则可能是另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
  • 2014-04-13
  • 1970-01-01
  • 2015-03-04
  • 2015-09-30
相关资源
最近更新 更多