Podemos crear fácilmente una lista de tareas pendientes mediante el módulo Arrastrar y Soltar proporcionado por el kit de desarrollo de componentes angulares (CDK).
En primer lugar, cree un componente angular utilizando el siguiente comando:
ng g c To-Do
Ahora importa CdkDragDrop, moveItemInArray, transferArrayItem desde @angular/cdk/drag-drop a nuestro componente de tareas pendientes,
Escribiendo el código para la vista de componentes:
Cree dos divisiones, una para los elementos que están POR HACER y otra para los elementos que están COMPLETADOS.
Estos son algunos de los parámetros:
- cdkDropList: permite que la división sepa que es un contenedor de entrega
- cdkDropListData: vincula los datos a la vista
- cdkDropListConnectedTo: obtiene la identificación de otro contenedor de entrega al que está conectada la división actual
- cdkDropListDropped: después de arrastrar los elementos, el modelo de datos debe actualizarse. Para eso, podemos escuchar este evento.
- cdkDrag: especifica que el elemento se puede arrastrar
Ejemplo:
<div> <!-- container for both list --> <h1>To do</h1> <!-- To-Do list --> <div cdkDropList #todoList="cdkDropList" [cdkDropListConnectedTo]="[doneList]" [cdkDropListData]="todo" (cdkDropListDropped)="drag($event)"> <div *ngFor="let item of todo" cdkDrag>{{item}}</div> </div> </div> <div> <h1>Done</h1> <!-- Done list --> <div cdkDropList #doneList="cdkDropList" [cdkDropListConnectedTo]="[todoList]" [cdkDropListData]="done" class="example-list" (cdkDropListDropped)="drag($event)"> <div *ngFor="let item of done" cdkDrag>{{item}}</div> </div> </div>
Ahora escriba el código para escuchar el evento y agregar los datos.
Aquí usamos una lista codificada, pero siempre puede recibir información usando la directiva ngmodel. Hay
dos posibilidades:
- El elemento se arrastra al mismo contenedor: use moveItemInArray para moverlo en el mismo contenedor
- El elemento se arrastra a otro contenedor: use transferArrayItem para mover a otro contenedor
export class To-Do { // hardcoded lists todo = [ 'Go to gym', 'Eat lunch', 'Take a nap', 'Physics syllabus' ]; done = [ 'Assignment', 'Coding practice', 'Maths syllabus', 'English syllabus' ]; //function for listening to the event drag(event: CdkDragDrop<string[]>) { //if movement if within the same container if (event.previousContainer === event.container) { moveItemInArray( event.container.data, event.previousIndex, event.currentIndex); } //if movement if to other containers else { transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex); } } }
Salida: arrastre exitoso de ‘Comer el almuerzo’ de la lista de tareas pendientes a la lista de tareas realizadas.
Publicación traducida automáticamente
Artículo escrito por vaibhav19verma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA