如何在angular 7中处理数据不均匀的JSON对象?

时间:2019-02-15 05:07:54

标签: arrays json angular angular6 angular7

服务以这种格式返回数据。我可以在开发人员工具栏中看到数据。

{"results":{"BindGridDatatable":[{"ID":"0005","Name":"Rohit"}, 
                             {"ID":"0006","Name":"Rahul"}], 
        "Totalvalue":119}}

我在组件中以这种方式接收

 btnSearch(){ 

 this.service.postControlResult(this.myForm.value).subscribe(
  (res: Response)=> {
    this.data = res ;       
   },err => console.error(err)
 );
  }

在HTML文件中,我尝试了多种方式来显示数据,例如

<div class="table">
<div class="row" *ngFor="let d of data  ">
 {{d.BindGridDatatable.ID}}
</div>
</div>

<div class="table">
<div class="row" *ngFor="let d of data.BindGridDatatable   ">
 {{d}}
</div>
 </div>

我只想将BindGridDatatable绑定到this.data对象和要存储在单独变量中的Totalvalue。

我收到错误TypeError:无法读取未定义的属性'BindGridDatatable'

2 个答案:

答案 0 :(得分:3)

根据您的结果,您需要像这样进行迭代-

public function handle(MessageSent $event)
{
    $message_id = $event->message
        ->getHeaders()
        ->get('x-ses-message-id')
        ->getValue();
}
  

PS:Angular安全导航运算符(?。)是一种流畅而便捷的方法,可防止在属性路径中出现null和undefined值。

并且通常用于异步调用数据绑定中,在初始阶段变量值是null或未定义,以避免此类问题,我们使用安全的导航运算符<div class="table"> <div class="row" *ngFor="let d of data?.results?.BindGridDatatable"> {{d?.ID}} - {{d?.Name}} </div> </div>

有关?

的更多详细信息

答案 1 :(得分:2)

您的响应是一个对象,而不是数组。  因此使用

let d of d.results.BindGridDatatable 

在ngfor