我正在研究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();
//调用获取票证的方法并在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>
答案 0 :(得分:1)
由于您尚未发布组件的代码,因此很难确定。但是,如果您使用的是changeDetectionStrategy OnPush,那么如果您没有将ChangeDetectorRef注入组件并在需要重新渲染模板时使用它的markForCheck方法,则会发生这种情况。
因此,首先将其添加到组件的构造函数参数中:
private changeDetectorRef: ChangeDetectorRef
然后更改将this.selectedTicket设置为此的代码:
this.accountService.getTicket(ticketId).subscribe(res => {
this.selectedTicket = res;
this.changeDetectorRef.markForCheck()
);