You need to enable JavaScript to run this app. 如何实现PrimeNG p-table行拖拽投放至多个pDroppable容器功能
优惠活动
大模型
产品
解决方案
定价
更多

如何实现PrimeNG p-table行拖拽投放至多个pDroppable容器功能

实现PrimeNG p-table行拖拽至多投放容器方案

1. 依赖导入

首先在对应Angular功能模块中引入PrimeNG拖拽模块:

  • 导入语句:import { DragDropModule } from 'primeng/dragdrop';
  • 将DragDropModule加入到@NgModule的imports数组中生效

2. 模板层配置

2.1 p-table行拖拽配置

给表格每一行绑定pDraggable属性,指定拖拽组标识和传递的行数据:

<p-table [value]="tableData">
  <ng-template pTemplate="body" let-rowData>
    <tr 
      pDraggable="tableRowItem"
      [dragData]="rowData"
      dragEffect="move"
    >
      <td>{{rowData.id}}</td>
      <td>{{rowData.content}}</td>
      <!-- 其他列自定义渲染 -->
    </tr>
  </ng-template>
</p-table>

2.2 多投放容器配置

所有接收拖拽的容器绑定pDroppable属性,和拖拽组标识保持一致,同时绑定投放事件区分不同容器:

<!-- 支持循环生成任意数量投放容器,示例为8个容器 -->
<div 
  *ngFor="let container of dropContainerList; let idx = index"
  pDroppable="tableRowItem"
  (onDrop)="onItemDrop($event, idx)"
  class="drop-box"
>
  <h4>第{{idx+1}}个投放容器</h4>
  <div class="dropped-item" *ngFor="let item of container.itemList">
    {{item.content}}
  </div>
</div>

注意:pDraggable与pDroppable绑定的组标识必须完全一致,否则拖拽元素无法被对应容器识别接收。

3. 逻辑层处理

// 表格原始数据源
tableData: any[] = [];
// 初始化8个空投放容器
dropContainerList: {itemList: any[]}[] = Array.from({length: 8}, () => ({itemList: []}));

// 投放事件处理
onItemDrop(dragEvent: any, containerIndex: number) {
  // 获取拖拽传递的表格行数据
  const draggedRow = dragEvent.dragData;
  // 将数据推入对应目标容器的列表中
  this.dropContainerList[containerIndex].itemList.push(draggedRow);

  // 可选逻辑:拖拽完成后从原表格删除该行
  // const originIndex = this.tableData.findIndex(item => item.id === draggedRow.id);
  // if(originIndex > -1) this.tableData.splice(originIndex, 1);
}

4. 交互样式优化(可选)

/* 拖拽过程中原始行透明度调整 */
tr.p-dragging {
  opacity: 0.4;
  cursor: move;
}
/* 投放容器被拖拽元素悬停时的高亮样式 */
.drop-box.p-drag-over {
  border: 2px dashed #1677ff;
  background: #e6f4ff;
}
/* 投放容器基础样式 */
.drop-box {
  min-height: 120px;
  border: 1px solid #e5e7eb;
  border-radius: 6px;
  padding: 12px;
  margin: 10px 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:57:03