Angular CDK (Component Development Kit) è una libreria, creata da Google, che offre funzionalità per la realizzazione di componenti. Sebbene questa libreria sia associata a Material, essa non dipende da Material in alcun modo e quindi possiamo utilizzarla in qualuqnue scenario.
Una delle funzionalità offerte da Angular CDK è il sorting di oggetti sulla UI tramite drag&drop. Supponiamo di dover mostrare una lista di task e di dover permetere all'utente di ordinare i task con il drag&drop. Con Angular CDK quest'operazione è estremamente semplice. Per prima cosa dobbiamo installare il package @angular/cdk. Fatto questo dobbiamo importare il modulo DragDropModule nel nostro modulo.
import { DragDropModule } from '@angular/cdk/drag-drop';
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
DragDropModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }Una volta fatto questo, nel nostro component creiamo una lista di task e li mettiamo in binding nel template HTML.
export class AppComponent {
tasks = ['Task1', 'Task2', 'Task3', 'Task4', 'Task5'];
}<div cdkDropList class="example-list" (cdkDropListDropped)="drop($event)">
<div class="example-box" *ngFor="let task of tasks" cdkDrag>{{task}}</div>
</div>Il codice del component è di poco interesse, mentre invece il template è molto più ricco di funzionalità. Innanzitutto creiamo un div che contiene tutti gli elementi e specifichiamo che agisce come contenitore tramite la direttiva ckdDropList. Inoltre, specifichiamo che all'evento cdkDropListDropped, scatenato quando si si fa il drop di un elemento deve essere invocato il metodo drop del component passando in input un oggetto che rappresenta l'evento. All'interno del contenitore, creiamo un div per ogni task decorandolo con la direttiva cdkDrag che specifica che quest'oggetto può essere spostato dall'utente per essere ordinato.
Il metodo drop del component accetta un oggetto di tipo CdkDragDrop
drop(event: CdkDragDrop<string[]>) {
moveItemInArray(this.movies, event.previousIndex, event.currentIndex);
}Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Supportare la crittografia di ASP.NET Core con Azure Container App
Configuratione e utilizzo .NET Aspire CLI
Proteggere l'endpoint dell'agente A2A delle Logic App
Analizzare il contenuto di una issue con GitHub Models e AI
Gestire progetti NPM in .NET Aspire
Creare un agente A2Acon Azure Logic Apps
Eliminare una project wiki di Azure DevOps
Gestire pubblicazione Kubernetes tramite .NET Aspire
Gestire il routing HTTP in Azure Container App
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Scrivere selettori CSS più semplici ed efficienti con :is()
Implementare il throttle in JavaScript
I più letti di oggi
- Community Days 2019: Birthday Edition - Milano
- Rilasciato il Web Standards Update for Microsoft Visual Studio 2010 SP1
- Disponibile la ROM e l'SDK di Windows Phone 7.1 beta 2
- Microsoft Security Bulletin MS03-012
- Mono 1.1.10 per un po' di ASP.NET 2.0
- .NET Aspire per applicazioni distribuite
- Utilizzare il web service di Tiscali per inviare SMS da una pagina ASP.NET
- Risparmiare risorse con ASP.NET AJAX
- Leggere feed RSS e Atom con il .NET Framework 3.5
- Tutorial Windows 8 e WinRT


