Angular使用自带拖动组件-实现拖动效果

前言

    客户需求:某块内容能拖动改变顺序。网上也找过第三方组件,但是没用成功,可能是姿势不对
于是就发现了angular 自带的拖动组件。
注:本文记录简单的使用,并没有太多的理解。
更多用法,看官网吧===>angular官网拖动

结果演示

在这里插入图片描述
(不知道为啥,录制的gif上传后总是变成png,无奈只能重新截个图了)

目录

一、xxx.module.ts 中相关操作

二、xxx.components.ts 中相关操作

三、xxx.components.html 中相关操作

正文

一、xxx.module.ts 中相关操作

1. 关键代码

...
import { DragDropModule } from '@angular/cdk/drag-drop';
...
imports: [
...
   DragDropModule,
...
 ],

2. 说明

我的是在 app.module.ts 中引入的。


二、xxx.components.ts 中相关操作

1. 关键代码

...
import { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
...
public test_dataList = []
 ngOnInit() {
   for(let i=0;i<14;i++){
     this.test_dataList.push( {
       key: `测试key${i}`,
       title: `测试title${i}`,
       btnTitle: `测试value${i}`,
     })
   }
 }
drag(event: CdkDragDrop<string[]>) {
  //如果在同意容器内移動
  if (event.previousContainer === event.container) {
    moveItemInArray(
      event.container.data, event.previousIndex, event.currentIndex);
  }
  //如果在不同容器中拖动
  else {
    transferArrayItem(event.previousContainer.data,
      event.container.data,
      event.previousIndex,
      event.currentIndex);
  }
}

2. 说明

  • drag方法为拖动操作后的回调,if else 用于判断是否在一个容器中,显然我们的从来都在一个容器中拖动,所以程序不会走到这里来
  • drag中 moveItemInArray() 表示在同一个容器中移动方法,模块自带的。同理 transferArrayItem() 表示在不同容器中移动方法;

三、xxx.components.html 中相关操作

1. 关键代码

 <div class="yin_box" cdkDropList  [cdkDropListData]="test_dataList"
      (cdkDropListDropped)="drag($event)">
      <div *ngFor="let itemObj of test_dataList" class="container" cdkDrag>
          <div class="title">{{itemObj.title}}</div>
          <div class="btn">{{itemObj.btnTitle}}</div>
          <div class="hoverView">{{itemObj.btnTitle}}</div>
      </div>
  </div>

2. 说明

  • 【cdkDropListData】拖动过程中,被操作的数据
  • (cdkDropListDropped) 拖动事件回调

希望没有遗漏啥~~~更多详细的用法建议看官网
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,下面我将为您介绍如何使用Angular和ng-zorro-antd组件库来实现以下7种组件的功能: 1. Button(按钮):创建一个带有文本或图标的按钮,当用户点击该按钮时可以执行相应的操作。 ``` // 在组件中引入Button模块 import { NzButtonModule } from 'ng-zorro-antd/button'; // 在模板中使用按钮组件 <button nz-button>点击我</button> ``` 2. Input(输入框):让用户输入文本或数字,可以添加校验规则。 ``` // 在组件中引入Input模块 import { NzInputModule } from 'ng-zorro-antd/input'; // 在模板中使用输入框组件 <nz-input [(ngModel)]="inputValue" [nzPlaceHolder]="'请输入内容'"></nz-input> ``` 3. Checkbox(复选框):让用户从多个选项中选择一个或多个选项。 ``` // 在组件中引入Checkbox模块 import { NzCheckboxModule } from 'ng-zorro-antd/checkbox'; // 在模板中使用复选框组件 <nz-checkbox [(ngModel)]="isChecked">选我</nz-checkbox> ``` 4. Radio(单选框):让用户从多个选项中选择一个选项。 ``` // 在组件中引入Radio模块 import { NzRadioModule } from 'ng-zorro-antd/radio'; // 在模板中使用单选框组件 <nz-radio-group [(ngModel)]="radioValue"> <label nz-radio nzValue="A">A</label> <label nz-radio nzValue="B">B</label> <label nz-radio nzValue="C">C</label> </nz-radio-group> ``` 5. Select(下拉框):让用户从多个选项中选择一个选项。 ``` // 在组件中引入Select模块 import { NzSelectModule } from 'ng-zorro-antd/select'; // 在模板中使用下拉框组件 <nz-select [(ngModel)]="selectedValue" [nzPlaceHolder]="'请选择'"> <nz-option *ngFor="let option of options" [nzValue]="option.value" [nzLabel]="option.label"></nz-option> </nz-select> ``` 6. Table(表格):用于展示大量的数据。 ``` // 在组件中引入Table模块 import { NzTableModule } from 'ng-zorro-antd/table'; // 在模板中使用表格组件 <nz-table [nzData]="data"> <thead> <tr> <th>ID</th> <th>Name</th> <th>Age</th> <th>Address</th> </tr> </thead> <tbody> <tr *ngFor="let item of data"> <td>{{ item.id }}</td> <td>{{ item.name }}</td> <td>{{ item.age }}</td> <td>{{ item.address }}</td> </tr> </tbody> </nz-table> ``` 7. Modal(弹框):用于展示额外的信息或操作,需要用户进行确认或取消。 ``` // 在组件中引入Modal模块 import { NzModalModule } from 'ng-zorro-antd/modal'; // 在模板中使用弹框组件 <button nz-button (click)="showModal()">打开弹框</button> <nz-modal [(nzVisible)]="isVisible" [nzTitle]="'提示'" [nzContent]="'确定执行该操作吗?'" [nzOkText]="'确定'" [nzCancelText]="'取消'" (nzOnOk)="handleOk()"> </nz-modal> ``` 以上就是7种ng-zorro-antd组件使用方法,您可以根据自己的需求进行修改和定制。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值