【发布时间】:2018-04-22 12:58:31
【问题描述】:
我的场景如下
1) 当用户在文本字段中输入关键字并单击搜索图标时,它将发起 HTTP 请求以获取数据。
2)数据用 ngFor 渲染成 HTML
问题在于第一次单击时数据未以 HTML 格式呈现,但我正确获取了 HTTP 响应,并且仅在第二次单击时呈现数据。
component.ts
export class CommerceComponent implements OnInit {
private dealList = [];
//trigger on search icon click
startSearch(){
//http service call
this.getDeals();
}
getDeals(){
this.gatewayService.searchDeals(this.searchParams).subscribe(
(data:any)=>{
this.dealList = data.result;
console.log("Deal list",this.dealList);
},
(error)=>{
console.log("Error getting deal list",error);
this.dealList = [];
alert('No deals found');
}
);
}
}
Service.ts
searchDeals(data){
var fd = new FormData();
fd.append('token',this.cookieService.get('token'));
fd.append('search',data.keyword);
return this.http.post(config.url+'hyperledger/queryByParams',fd);
}
HTML
//this list render only on second click
<div class="deal1" *ngFor="let deal of dealList">
{{deal}}
</div>
更新
点击绑定html代码
<div class="search-input">
<input type="text" [(ngModel)]="searchParams.keyword" class="search" placeholder="" autofocus>
<div class="search-icon" (click)="startSearch()">
<img src="assets/images/search.png">
</div>
</div>
【问题讨论】:
-
将您的代码发布到您将“点击”事件绑定到 StartSearch() 函数的位置
-
当你登录
this.dealList第一次点击结果是什么? -
@Thangadurai 更新了我的问题
-
你看到第一个按钮点击时的console.log("Deal list"...吗?我在我的一个有角度的项目中尝试过,但(有趣的是)它工作得很好。
-
@fatemefazli 它会在第一次点击时记录结果
标签: javascript angular angular5