同步方法角度2

时间:2017-09-19 14:31:34

标签: angular typescript angular2-services angular2-directives

我在网格中有单元格,其中包含每个公司的用户数,这个数字来自typescript方法getNumberOfUsers(),这个方法调用后端Web服务返回用户数。 问题:所有单元格显示为0,尽管getNumberOfUsers()在控制台中打印用户数

 <tr>
   <td>
     {{ getNumberOfUsers() }}
   </td>
 </tr>

组件ts文件

getNumberOfUsers(): number {
  let NumUser=0;
  this.callServices.getUserCount().subscribe((res: any) => {
    NumUser = JSON.parse(res._body).numberOfUser;
    Console.log(“NumUser=”+ NumUser)
  },
    (err) => console.error(' getUserCount::err==' + err)
  );

  return NumUser;
}

callService文件

getUserCount(): Observable<any> {
  return this.http.post(this.apiUrl+'/ getUserCount);
}

我想制作同步方法

1 个答案:

答案 0 :(得分:0)

异步方法不能以同步方式工作。建议您阅读How does JavaScript handle AJAX responses in the background?

在这种情况下,您可以考虑使用async管道来显示由异步性质填充的值。

更改工厂方法以从中返回json

getUserCount ():Observable<any>
{
    return this.http.post(this.apiUrl+'/ getUserCount).map(data => data.json())
}

//change getNumberOfUsers to return getUserCount Observable 
getNumberOfUsers(): Observable<any>{
    this.callServices.getUserCount();
}

<强> HTML

{{ (getNumberOfUsers() | async)?. numberOfUser}}