Arrays 尝试以角度迭代对象数组

Arrays 尝试以角度迭代对象数组,arrays,json,angular,object,service,Arrays,Json,Angular,Object,Service,问题:尝试以角度迭代对象数组,但只显示第一个对象。服务正常,我得到了充分的回应 角度服务,其中我对所有资产执行get: getAsset(asset_type):Observable<Asset[]>{ return this.http.get<Asset[]>(`${this.find}/${this.domain_id}/assets?asset_type=${asset_type}`, httpOptions); } component.ts

问题:尝试以角度迭代对象数组,但只显示第一个对象。服务正常,我得到了充分的回应

角度服务,其中我对所有资产执行get:

getAsset(asset_type):Observable<Asset[]>{

      return this.http.get<Asset[]>(`${this.find}/${this.domain_id}/assets?asset_type=${asset_type}`, httpOptions);
    }
component.ts,我在其中调用服务并发送相应的参数

ngOnInit() {
    this.whereisService.getAsset(this.asset_type).subscribe(assets => {

      if(Array.isArray(assets)){
        this.assets = assets;
      }
      else if(typeof assets === 'string' ){
        this.assets = [];
      }
      else{
         this.assets = [assets];
      }


   });
  }
}
component.html

<div class="text-center">
    <ul id="ticket" class="list-unstyled my-2">
        <li class="btn w-100 bg-primary text-center text-white mx-0 my-2 display-block" *ngFor="let asset of rows_transformed let i = index">       
            <p class="h5"> Name: {{ asset?.asset_name }}</p>
            <p class="h5"> Tipo: {{ asset?.asset_type }}</p>
            <p class="h5"> Mac adress: {{ asset?.mac_address }}  </p>
            <p class="h5"> Piso: {{ asset?.floor }} </p>
            <p class="h5"> Localização: {{ asset?.location }} </p>
            <p class="h5"> Hora: {{ asset?.timestamp_tlm }} </p>
        </li>
    </ul>
</div>

JSON响应与您期望的不匹配。从简化组件开始。服务应该返回一个可观察的
。因此,组件不应该测试发出的事件是数组还是字符串。它应该是一系列的资产。如果不是,则应修复服务:

this.whereisService.getAsset(this.asset_type).subscribe(assets => this.assets = assets);
然后,您需要修复服务。服务器返回的不是数组。它是一个具有
data
属性的对象,该属性是一个资产数组。所以服务应该是

getAsset(asset_type): Observable<Asset[]>{
  return this.http.get<{ data; Asset[]; }>(`${this.find}/${this.domain_id}/assets?asset_type=${asset_type}`, httpOptions).pipe(
    map(object => object.data)
  );
}
使用


在Html中,而不是在转换的行中。您也可以在不使用i时将其废弃。

订阅后,this.whereisService.getAsset(this.asset\u type).subscribe(assets=>{….console.log(assets);您可以在此处看到响应吗?@gangandahargandi是的,我可以看到响应where是**rows\u transformed**数组?
*ngFor=“let asset of rows\u transformed let i=index”
请查看详细信息。
this.whereisService.getAsset(this.asset_type).subscribe(assets => this.assets = assets);
getAsset(asset_type): Observable<Asset[]>{
  return this.http.get<{ data; Asset[]; }>(`${this.find}/${this.domain_id}/assets?asset_type=${asset_type}`, httpOptions).pipe(
    map(object => object.data)
  );
}
*ngFor="let asset of assets; index as i"
*ngFor="let asset of assets"