首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular CDK的拖放,保持顺序直到拖放

Angular CDK 拖放基础概念

Angular CDK(Component Dev Kit)是 Angular 官方提供的一套工具集,用于构建复杂的前端界面和交互。拖放(Drag and Drop)是 CDK 中的一个功能模块,允许开发者轻松实现元素的拖放操作。

优势

  1. 灵活性:Angular CDK 拖放模块提供了高度的灵活性,可以轻松定制拖放行为。
  2. 集成性:作为 Angular 的一部分,CDK 拖放模块与 Angular 的其他功能(如表单、服务等)无缝集成。
  3. 性能:CDK 拖放模块经过优化,能够处理大量数据和复杂交互,同时保持良好的性能。

类型

Angular CDK 拖放主要涉及以下几种类型:

  1. 基本拖放:实现简单的元素拖放。
  2. 排序拖放:在列表或网格中实现元素的排序。
  3. 约束拖放:限制元素只能在特定区域内拖放。

应用场景

  1. 任务管理:在任务管理应用中,用户可以通过拖放重新排序任务。
  2. 数据可视化:在数据可视化应用中,用户可以通过拖放调整图表元素的位置。
  3. 布局设计:在布局设计工具中,用户可以通过拖放调整页面元素的位置。

保持顺序直到拖放的问题

在使用 Angular CDK 拖放时,有时会遇到一个问题:元素在被拖动时会暂时改变其原始位置,导致排序混乱。这通常是因为拖动操作会触发元素的重新布局。

原因

当元素被拖动时,浏览器会重新计算布局,导致元素的位置暂时改变。如果在拖动过程中没有正确处理元素的原始位置,就会导致排序混乱。

解决方法

为了保持元素在拖动过程中的顺序,可以使用 cdkDrag 指令的 data 属性来存储元素的原始位置信息。在拖放结束后,再根据这些信息重新排序。

以下是一个简单的示例代码:

代码语言:txt
复制
<ul cdkDropList (cdkDropListDropped)="drop($event)">
  <li *ngFor="let item of items" cdkDrag [cdkDragData]="item">
    {{ item.name }}
  </li>
</ul>
代码语言:txt
复制
import { Component } from '@angular/core';
import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';

@Component({
  selector: 'app-drag-drop',
  templateUrl: './drag-drop.component.html',
  styleUrls: ['./drag-drop.component.css']
})
export class DragDropComponent {
  items = [
    { name: 'Item 1' },
    { name: 'Item 2' },
    { name: 'Item 3' }
  ];

  drop(event: CdkDragDrop<string[]>) {
    moveItemInArray(this.items, event.previousIndex, event.currentIndex);
  }
}

在这个示例中,cdkDragData 属性用于存储每个元素的原始数据。moveItemInArray 函数用于在拖放结束后重新排序元素。

参考链接

通过以上方法,可以有效解决 Angular CDK 拖放过程中保持顺序的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基于h5+ angularjs页面拖拽实现

感觉写比较麻烦。我就反手百度h5拖放,发现h5已经提供一些拖放事件,于是自己反手写了一个。以此为笔记记录。...正题 1.h5提供拖放事件 设置元素为可拖放 首先,为了使元素可拖动,把 draggable 属性设置为 true : 拖动什么 - ondragstart...被拖数据是被拖元素 id ("drag1") 把被拖元素追加到放置元素(目标元素)中 以上内容来源于W3school 2.整合angular 有时候不得不说前端一些框架真的方便。...image/3.jpg'},{id:4,src:'image/4.jpg'},{id:5,src:'image/6.png'},{id:6,src:'image/7.jpg'}] 第三步:照抄h5拖放事件函数...$apply(); } 第四步:定义函数,修改图片数组顺序(angualr最好用地方之一就是双向绑定。所以只需要操作图片数组顺序就可以实现页面上交换图片位置)。

1.5K20

前端10大开源拖拽排序库汇总, 让搭建,更简单

❞ 1. dragula 一款强大且兼容性极好拖拽排序库, 兼容「IE7+」, 并且支持 「vanilla JavaScript / Angular / React」等框架....Sortable 「Sortable」 —是一个「JavaScript」库,用于在现代浏览器和触摸设备上对拖放列表进行重新排序。无需「jQuery」。...它提供了一个视觉效果引擎,一个拖放库(包括可排序列表),几个控件(基于「Ajax」动态下拉列表,原地编辑,滑块)等等。...有很多库允许React中拖放交互. 其中最值得注意是惊人「react-dnd」. 它提供了一套非常出色拖放函数,这些函数在特定情况下非常适用疯狂地不一致html5拖放功能....「react-beautiful-dnd」 是为垂直和水平列表专门构建更高级别的抽象. 在该功能子集内「react-beautiful-dnd」提供强大,自然和美丽拖放体验.

5.9K21
  • 【前端拖拽组件库】最强开源高性能组件库Pragmatic-drag-and-drop简介与分析

    Pragmatic-drag-and-drop 一种低级拖放工具链,可广泛应用于现有的任何技术堆栈上进行任何拖放体验,包括react、svelte、vue、angular 等,不受特定技术栈限制。...一、核心能力1.低等级拖放功能Pragmatic-drag-and-drop包含一个核心包和许多可选包,为提供任何你想创建拖放功能。...Framework agnostic:适用于任何前端框架,支持react、svelte、vue、angular 等。...'lightgrey' : 'white';}3.移动棋子最后实现棋子在掉落时移动方块,我们将使用monitorForElements实用拖放功能。监视器允许从代码库中任何位置观察拖放交互。...小结本节我们学习了Pragmatic-drag-and-drop,一个高效实用前端拖放组件库,我们通过Pragmatic-drag-and-drop可以轻松实现前端页面的拖放功能,而且不受前端技术框架限制

    2.6K21

    整理了12款开源拖拽库, 轻松上手可视化搭建

    1. dragula 一款强大且兼容性极好拖拽排序库, 兼容「IE7+」, 并且支持 「vanilla JavaScript / Angular / React」等框架....它提供了一个视觉效果引擎,一个拖放库(包括可排序列表),几个控件(基于「Ajax」动态下拉列表,原地编辑,滑块)等等。...有很多库允许React中拖放交互. 其中最值得注意是惊人「react-dnd」. 它提供了一套非常出色拖放函数,这些函数在特定情况下非常适用疯狂地不一致html5拖放功能....「react-beautiful-dnd」 是为垂直和水平列表专门构建更高级别的抽象. 在该功能子集内「react-beautiful-dnd」提供强大,自然和美丽拖放体验....React-Grid-Layout 「React-Grid-Layout」 可以让我们轻松构建智能网格布局拖放界面, 我们可以基于react动态组件实现非常有意思搭建平台.

    1.4K20

    开发人员必须了解 10 大前端开发工具

    Angular图片Angular 创建于 2009 年,其目的是通过预置模板、快速代码生成和简单 MVC 架构来帮助开发者进行开发。...Angular 有一个双向数据绑定系统,以确保视图层和模型层之间同步。...低代码平台具有更快、更灵活特点,还有拖放功能、随时可用模板和其他各种可视化工具,能大大简化开发程序过程,还能确保更快数字化转型,快速实施变化和降低开发成本。...Bubble 移动友好型拖放界面确保内部用户在应用开发过程中拥有充分设计自由。随着应用不断发展,Bubble 简化了你应用扩展,以适应更多用户。...使用简单拖放功能实现页面上互动,建立管理面板、Admin 后台、CMS 系统 等多种 CRUD 应用程序、内部系统等。想探索更多吗?快来使用码匠。

    1.9K51

    都 9012了,该选择 Angular、React,还是Vue?

    视觉风格:谷歌在Angular 7之前已于2018年更新了Material.io,用户更新后会出现细微视觉差异:如,UI结构层次更为大胆、形状边角更加圆滑,五种全新 Icon 样式,以及一个非常时尚且现代化拖放模块...Angular 7 拖放效果 React Angular出现,在Web社区引发了强烈轰动。两年后,Facebook 也推出了一款同样具备丰富功能JavaScript UI组件库——React。...组件功能:React VS Angular Angular提供了比React更多开箱即用功能,如: 依赖注入 基于HTML扩展模板 由 @angular / router 提供路由 使用 @angular...和Vue学习速率都高于Angular。...如果您开发理念更趋向全栈文化、跨平台、保持独特、引领潮流而不是跟随,那么您一定会喜欢Vue;但如果您项目需要大量熟练使用该框架前端开发者、大量工具及第三方库,那么您最好使用React。

    1.9K20

    Angular 6正式版发布,都有哪些新功能

    除此之外,这次更新还包括框架包(@angular/core、@angular/common、@angular/compiler 等)、Angular CLI、Angular Material + CDK...创建ng add示例如下:Angular Metarial ng add schemetic Angular Elements Angular Elements 第一个版本专注于在现有的 Angular...Angular Material + CDK 组件 最值得一提是用于显示分层数据树形控件,遵循数据表组件模式,CDK 包含树核心指令,而 Angular Material 则提供与顶层 Material...目前,@angular/cdk/overlay 软件包是 CDK 最强大基础架构之一,你可以利用他们来构建自己 UI 库。...RxJS v6 Angular 6 也将支持RxJS v6,RxJS v6 于上个月发布。RxJS v6 带来了一个向后兼容软件包 rxjs-compat,它可以让你应用程序保持运行。

    4.2K20

    HTML5 & CSS3初学者指南(3) – HTML5新特性

    主要包含以下几个方面: Web 存储 地理位置 拖放 服务器发送事件 Web存储 HTML5 Web 存储设计与构想是一个更好机制来存储客户端网络数据。...就像 cookies,你可以选择将保持数据(维持),即使你已经离开了该网站,关闭了浏览器选项卡,退出了浏览器或关闭了计算机。...拖放 我们已经很熟悉拖放电脑桌面上文件、文件夹和图标了。拖放是一种任何桌面应用具有的强有力也是理所当然应该具备用户交互。...使用像鼠标这样指针设备,通过拖放来实现拷贝,插入和删除任何电脑桌面上文件和对象。 HTML5 Drag and Drop API 提供了对浏览器拖放操作原生支持,使得代码实现拖放变得更容易。...Wijmo 是一款大而全面的前端 HTML5 / JavaScript UI控件集,能为企业应用提供更加灵活操作体验,现已全面支持Angular 2。

    2.1K80

    如何更好地使用笔记本触控板(Touchpad)

    如何更好地使用笔记本触控板(Touchpad)? 1. 轻敲即可代替按钮 在Touchpad上轻敲如同按鼠标左按钮,轻敲通常比单按按钮更方便、更容易,轻敲两次如同按钮两次。...不用按钮而实行拖放 您经常需要按住鼠标按钮来移动游标 (例如, 在荧幕中移动图示或视窗),这个动作被称为拖放,当您使用Touchpad 时,您可不用按钮而进行拖放。...若要实行拖放,轻敲两次(即:下-上-下); 第二次轻敲后将您手指放在 Touchpad 上。(一些人称这个动作为轻敲一次半)。...您就会一直处于拖放状态中 (好似按住鼠标左按钮),直到手指离开Touchpad,拖放才会停止。 3....实现滚动功能 在Windows中,一但您安装了鼠标触控板驱动程序,当您要在各种窗口中拖动水平或垂直滚动条时,只需要用手指在鼠标触控板底边和右边移动即可拖动相应滚动条。

    1.2K10

    【MySQL】使用Visio绘制数据库关系模型图

    大家好,又见面了,我是你们朋友全栈君。...使用Visio绘制数据库关系模型图 1 新建项目 文件—新建–软件和数据库—数据库模型图 点击后,出现如下界面: 2 绘制 左侧“实体关系”中将“实体”形状拖放到绘制界面,如下图...完成实体:客人信息表 GuestRecord,如下截图 完成实体:客房表Room(同上操作),如下图 5 关系绑定 5.1添加 列RoomID到客人信息表 5.2 将“实体关系”中关系工具拖放到某个实体上...(鼠标不松开),直到该实体边框变红色,松开;箭头指向:外键实体指向主键实体。...如果方向反了,界面中关系工具两边分别拖放直到实体边框变红,松开鼠标。自动绑定外键,显示FK1,即第一个外键绑定设置成功。点击关系工具(箭头图案),显示两表主外键绑定连接。

    3.8K30

    drag事件详解:html5鼠标拖动排序及resize实现方案分析及实践

    而HTML5中直接提供了拖放API,只要通过监听元素拖放事件就能实现各种拖放功能。拖放API阐释拖放(Drag和 drop)是 HTML5 标准组成部分。...拖放事件事件详情一个元素被拖放,他可能会经过很多个元素上,最终到达想要放置元素内。这里,我暂时把被拖放元素称为源对象,被经过元素称为过程对象,到达元素称为目标对象。...不同对象产生不同拖放事件。...dragleave当被拖动元素没有放下就离开目的地元素时触发整个拖拽事件触发顺序如下:dragstart-> drag -> dragenter -> dragover -> dragleave ->...它返回一个我们在dragstart事件中设置拖动数据格式数组。 格式顺序与拖动操作中包含数据顺序相同。files返回拖动操作中文件列表。包含一个在数据传输上所有可用本地文件列表。

    6.4K21

    A Better Finder Rename 11 for Mac(强大批量重命名工具)v11.56中文直装版

    A Better Finder Rename 11汉化版是一款强大批量重命名工具,可以批量对电脑中文件进行改名操作,支持文档、音乐、图片或者添加文件夹进行改名,支持按照时间进行修改,可以有效地提升办公人员工作效率...图片A Better Finder Rename 11 for Mac(强大批量重命名工具)a better finder rename功能特色拖放以添加添加文件就像将它们从Finder中拖入一样简单...即时预览键入时可以预览更改,从而消除猜测工作并避免代价高昂错误。拖放顺序默认情况下,项目是按字母顺序或按其他标准(例如创建或捕获日期)进行组织,但是您也可以通过拖放来随意重新安排项目。

    64420

    Angular 6新特性介绍

    ng update ng update 是新增一个cli命令。通过ng update不仅可以保持正确版本依赖,而且能保持依赖关系同步。第三方可以使用原理图提供更新脚本。...通过ng add可以更加容易向项目中添加新功能(类似npm install ) Angular Material+CDK组件 angular6最大补充是用于显示分层数据新树组件。...遵循数据表组件模式,CDK包含核心树指令,而Angular Material则提供与顶层Material Design样式相同体验 Material 运行命令,添加Material ng add...点击查看更多关于CLI工作空间信息 Providers改变 为了使我们程序变得轻量,Angular6将模块引入服务模式,改成服务引入模块模式。...更新@ angular / cli 更新你Angular框架包 更新其他依赖项 Ivy Ivy将会是下一代渲染引擎,现在正在开发中。让我们拭目以待吧。 原文链接

    2.3K21

    免费又好用低代码开发平台有哪些?

    直观拖放界面使得开发者和业务用户能够轻松构建满足他们独特需求网络和移动应用程序。...产品主要特点:1、易用性nuBuilder提供了一个简洁界面和低代码工具,包括支持拖放功能,使得即使是没有编程经验用户也能快速创建和使用数据库。...JHipster低代码开发平台不仅支持创建基于Spring Boot + Angular后端应用程序,还能创建包含Angular、React或Vue.js前端应用程序和微服务架构。...4、学习成本高尽管JHipster旨在简化开发流程,但对于不熟悉Spring Boot、Angular/React/Vue.js或其他集成技术开发者来说,仍有一定学习曲线。...六、AppianAppian是一个低代码平台,它通过提供图形化界面、拖放式设计和模板化组件,使企业能够快速构建业务应用程序,而无需编写大量代码。

    40510

    基于自然流布局可视化拖拽搭建平台设计方案

    笔者目前想到了两种解决方案: 将智能布局改为自由布局, 即可以采用类似 react-resizable 这种方案 基于自然流来实现, 也就是抹去定位概念, 完全基于元素在文档顺序, 层级和定位选择权交给用户..., 也是比较核心环节. 2.1 H5拖放api基本介绍 拖放(Drag 和 drop)是 HTML5 标准组成部分, 早已被大多数浏览器支持....我们目前使用拖放插件基本上基于 H5 拖放 API 来实现, 其实实现第一点组件区拖拽至画布我们完全可以用原生来实现, 这里笔者简单来介绍以下....自然流布局规律就是默认情况下html页面是基于dom出现顺序来排列, 也就是我们说堆叠. ? 我们可以遵循这样设计, 通过排序方式改变组件位置从而实现自然流布局页面搭建....如何实现层级和嵌套 其实在上面的实现思路中我们已经解决了嵌套问题了, 即提供拖放容器组件, 利用笔者在上文中介绍拖放api即可实现.

    1.8K30

    Workflowy:你个人效率助手

    在快节奏现代生活中,我们经常需要处理大量信息和任务。一个强大组织工具可以帮助我们保持专注和高效。...无限层级结构 Workflowy 支持无限层级笔记,这意味着你可以创建任意深度子项目和任务,直到找到最适合你组织方式。 3....拖放文件 你可以轻松地将文件拖放到 Workflowy 中,无需切换应用程序。这使得 Workflowy 成为一个集中管理所有文件和笔记理想场所。 5....Workflowy 主要功能 1. 捕捉一切 Workflowy 快速启动和拖放功能让你可以轻松地捕捉任何信息,无论是文本、图片还是文件。 2....自定义你工作流:根据你需要调整和优化你工作流程。 结论 Workflowy 是一个强大工具,可以帮助你提高个人和团队生产力。

    11110

    前端-面试总结——http、html和浏览器篇

    2.tcp三次握手,一句话概括 客户端和服务端都需要直到各自可收发,因此需要三次握手。 简化三次握手: ?...9.HTML5 drag api dragstart:事件主体是被拖放元素,在开始拖放拖放元素时触发,。...darg:事件主体是被拖放元素,在正在拖放拖放元素时触发。 dragenter:事件主体是目标元素,在被拖放元素进入某元素时触发。...因此,系统往往可以提示用户保持登录状态时间:常见选项有一个月、三个 月、一年等。 跟踪用户行为。例如一个天气预报网站,能够根据用户选择地区显示当地天气情况。...当用户下次访问时,仍然可以保存上一次访问界面风格。 14.web worker 在HTML页面中,如果在执行脚本时,页面的状态是不可相应直到脚本执行完成后,页面才变成可相应。

    95820

    SmartSound SonicFire Pro Mac(音乐配乐软件)

    Sonicfire® Pro 版本 6 从头开始重新设计,同时精心保持其屡获殊荣易用性,代表了视频和媒体创作者音乐定制突破。...图片SmartSound SonicFire Pro软件功能引入新拖放功能将您 Sonicfire Pro 6 项目导入任何支持拖放音频文件导入应用程序。...将渲染 wav 文件拖放回 Sonicfire 并重新打开整个项目。...音乐配乐创作新里程碑从头开始重新设计,同时精心保持其屡获殊荣易用性,Sonicfire Pro 版本 6 代表了视频和媒体创作者在音乐定制方面的突破。时间控制现在更准确!...移动单个节拍,同时保持音乐完整性。情绪映射更改乐器组合以连接到您听众。自动混合控制。自定义长度使用我们专利功能来自定义任何音乐曲目的长度,从而节省数小时编辑时间。

    34010
    领券