Angular

Implementing Drag and Drop in Angular Using CDK

Introduction

This makes building interactive and intuitive UIs much easier with Angular's CDK drag-drop module. It abstracts some of the more complex tasks, like handling events and manipulating the DOM, which allows developers to easily incorporate drag-and-drop functionality with a hint from usability or functionality.

Features of Angular CDK Drag and Drop

  1. Transferring Items: Move items between different lists.
  2. Reordering Items: Easily rearrange items within a list.
  3. Custom Drag Previews: Modify the appearance of dragged items.
  4. Automatic Scrolling: Helps when dragging items in scrollable containers.
  5. Touch & Mouse Support: Works across various devices.
  6.  

Steps to Implement Drag and Drop in Angular

1. Install Angular CDK

Let's install the Angular CDK package to start:

npm install @angular/cdk

 

2. Import the DragDropModule

In your app module file, import the module:

import { DragDropModule } from '@angular/cdk/drag-drop';@NgModule({ imports: [DragDropModule],})export class AppModule {}

 

3. Define Drag-and-Drop in HTML

Use cdkDropList for the container and cdkDrag for draggable elements:

<div cdkDropList (cdkDropListDropped)="drop($event)">  <!-- Loop through items and make each one draggable -->  <div *ngFor="let item of items" cdkDrag>    {{ item }}  </div></div>

 

4. Handle Drag-and-Drop Events in TypeScript

now add the logic to refresh the list order when an item is been dragged and dropped.

import { Component }from'@angular/core';import {moveItemInArrayCdkDragDrop} from'@angular/cdk/drag-drop';@Component({ selector : 'app-root', templateUrl: './app.component.html'})export class AppComponent{items = ['Item1', 'Item2', 'Item3']}; drop(event : CdkDragDrop <string[]>) { moveItemInArray(this.items, event.previousIndex, event.currentIndex); }}

 

5. Add Styling (Optional)

Improve UI with basic styles:

div[cdkDrag] { padding: 10px; margin: 5px; background-color: lightgray; cursor: grab;}div[cdkDropList] {  min-height : 180px; /* Ensures the container maintains a minimum height */  border : 1px dashed #ccc; /* Adds a light gray dashed border for visibility */  padding : 15px; /* Provides inner spacing for better content layout */}

 

Ready to transform your business with our technology solutions? Contact Us today to Leverage Our Angular Expertise.

Contact Us

0

Comment

418

Share

facebook
LinkedIn
Twitter
Mail
Angular

Related Center Of Excellence