Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Angular2-单对象与阵列的对比_Arrays_Angular_Typescript - Fatal编程技术网

Arrays Angular2-单对象与阵列的对比

Arrays Angular2-单对象与阵列的对比,arrays,angular,typescript,Arrays,Angular,Typescript,在这种情况下,我从数据库接收到一个数据对象,其中包含文件版本的记录。可能有5个版本(5条记录)或返回一个版本 我的问题是我正在使用ngFor循环遍历数据数组并将它们打印到表中。如果只返回一条记录,则数据不再是对象数组,而只是单个对象 <tbody class="ruleVersions"> <tr *ngFor="let m of mapData.ruleVersion.x"> <td class="small">V {{ m.RuleVersion }

在这种情况下,我从数据库接收到一个数据对象,其中包含文件版本的记录。可能有5个版本(5条记录)或返回一个版本

我的问题是我正在使用
ngFor
循环遍历数据数组并将它们打印到表中。如果只返回一条记录,则数据不再是对象数组,而只是单个对象

<tbody class="ruleVersions">
 <tr *ngFor="let m of mapData.ruleVersion.x">
  <td class="small">V {{ m.RuleVersion }}.0</td>
  <td [innerHtml]="m.CreatorNTID | ntidLink"></td>
  <td class="small">{{ m.VersionNotes ? m.VersionNotes : 'N/A' }}</td>
  <td class="small">{{ m.BasedOnRuleVersionID ? m.BasedOnRuleVersionID : 'N/A' }}</td>
  <td class="small">{{ m.MetaInsertUtc }}</td>
 </tr>
</tbody>

当您收到响应时,您可以检查它是否是数组。如果它不是对象,则可以在数组中设置该对象,因此在服务中类似于以下内容:

getData() {
  return this.http.get('url')
    .map(response => {
      let res = response.json();   
      if(!Array.isArray(res)) {
         return [res]    
      }  
      return res;
    })
}
所以现在,无论你得到一个数组还是一个对象,它总是可以使用
*ngFor
进行编辑,因为组件总是接收一个数组。

可能的重复
getData() {
  return this.http.get('url')
    .map(response => {
      let res = response.json();   
      if(!Array.isArray(res)) {
         return [res]    
      }  
      return res;
    })
}