You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将对象内多组数组装入PrimeNG DataView并按数组分行渲染

实现方案

需求完全可以实现,核心问题是你当前的用法不符合PrimeNG DataView的入参要求:p-dataView的[value]属性必须接收数组类型,数组的每一个元素对应DataView的一行,你当前传入的是单个TrackingProductoTarjetasData对象,自然无法按要求渲染两行。


步骤1:调整绑定的数据源

你可以直接在组件中把tarjeta1、tarjeta2组装为数组作为DataView的数据源:

// 组件类中新增属性
dataViewRows: TrackingProductoTarjeta[][] = [];

// 拿到tarjetas实例后赋值
this.dataViewRows = [this.tarjetas.tarjeta1, this.tarjetas.tarjeta2];

步骤2:修改DataView模板代码

把[value]绑定到上述数组,直接循环每一行的子元素即可:

<p-dataView [value]="dataViewRows" [paginator]="true" [rows]="10" layout="list">
  <ng-template let-rowTarjetas pTemplate="listItem">
    <!-- 每一行对应tarjeta1或tarjeta2的数组,循环渲染内部元素 -->
    <div class="tarjeta-row">
      <span *ngFor="let item of rowTarjetas" class="tarjeta-item">
        {{item?.color}}
      </span>
    </div>
  </ng-template>
</p-dataView>

补充说明

如果你不想单独声明新的数组变量,也可以直接在模板内组装数据源,写法如下:

<p-dataView [value]="[tarjetas.tarjeta1, tarjetas.tarjeta2]" [paginator]="true" [rows]="10" layout="list">
  <!-- 模板内容和上述一致 -->
</p-dataView>

如果需要用grid布局也可以,只需要把layout改成grid,pTemplate改成gridItem即可,逻辑完全一致。


内容的提问来源于stack exchange,提问作者FranciscoFJM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:09:04