Angular PrimeNG树的拖放
Angular PrimeNG是一个开源框架,拥有丰富的原生Angular UI组件,可用于出色的造型,该框架可用于制作响应式网站,非常方便。在这篇文章中,我们将看到Angular PrimeNG树形拖放。
树形组件用于向用户提供分层的数据。树的节点可以被重新排序,也可以被转移到另一棵树上。通过将树的draggableNodes属性设置为 “true”,可以从树上拖动,通过将droppableNodes属性设置为 “true”,可以实现拖放。树的拖放需要将TreeDragDropService配置为提供者。
语法:
<p-tree
[value]="..."
[draggableNodes]="true"
[droppableNodes]="true">
</p-tree>
创建Angular应用程序并安装模块:
第1步:使用以下命令创建一个Angular应用程序。
ng new myapp
第2步:创建你的项目文件夹即myapp后,使用以下命令移动到它。
cd myapp
步骤3:在你给定的目录中安装PrimeNG。
npm install primeng --save
npm install primeicons --save
项目结构:完成上述步骤后,项目结构将如下所示。
Project Structure
例子1:在这个例子中,我们使用draggableNodes和droppableNodes属性启用了树中的拖放。
<div style="text-align: center">
<h2 style="color: green">GeeksforGeeks</h2>
<h4>Angular PrimeNG Tree Drag and Drop</h4>
<p-tree
[value]="nodes"
[draggableNodes]="true"
[droppableNodes]="true">
</p-tree>
</div>
import { Component } from '@angular/core';
import { TreeNode } from 'primeng/api';
import { NodeService } from './nodeservice';
import { TreeDragDropService } from 'primeng/api';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
providers: [TreeDragDropService]
})
export class AppComponent {
constructor(private nodeService: NodeService) { }
nodes: TreeNode[] = [];
ngOnInit() {
this.nodes = [
{
label: 'Files',
icon: 'pi pi-folder',
children: [
{
label: 'Office',
icon: 'pi pi-folder',
children: [
{
label: 'MS Excel',
icon: 'pi pi-folder',
},
{
label: 'MS Word',
icon: 'pi pi-folder',
},
],
},
{
label: 'Home',
icon: 'pi pi-folder',
children: [
{
label: 'Movies',
icon: 'pi pi-folder',
},
],
},
],
},
{
label: 'Docs',
icon: 'pi pi-folder',
children: [
{
label: 'Academic',
icon: 'pi pi-folder',
},
{
label: 'Loans',
icon: 'pi pi-folder',
},
{
label: 'Investments',
icon: 'pi pi-folder',
},
],
},
];
}
}
import { NgModule } from '@angular/core';
import { BrowserModule }
from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { HttpClientModule }
from '@angular/common/http';
import { BrowserAnimationsModule }
from '@angular/platform-browser/animations';
import { AppComponent } from './app.component';
import { NodeService } from './nodeservice';
import { TreeModule } from 'primeng/tree';
import { ButtonModule } from 'primeng/button';
@NgModule({
imports: [
BrowserModule,
BrowserAnimationsModule,
TreeModule,
ButtonModule,
HttpClientModule,
FormsModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent],
providers: [NodeService],
})
export class AppModule { }
输出:
例子2:在这个例子中,我们把节点从一棵树拖到另一棵树。
<div style="text-align: center">
<h2 style="color: green">GeeksforGeeks</h2>
<h4>Angular PrimeNG Tree Drag and Drop</h4>
<p>First Tree:</p>
<p-tree
[value]="nodes"
[draggableNodes]="true"
[droppableNodes]="true">
</p-tree>
<p class="mt-5">Second Tree:</p>
<p-tree
[value]="nodes2"
[draggableNodes]="true"
[droppableNodes]="true">
</p-tree>
</div>
import { Component } from '@angular/core';
import { TreeNode } from 'primeng/api';
import { NodeService } from './nodeservice';
import { TreeDragDropService } from 'primeng/api';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
providers: [TreeDragDropService]
})
export class AppComponent {
constructor(private nodeService: NodeService) { }
nodes: TreeNode[] = [];
nodes2: TreeNode[] = [];
ngOnInit() {
this.nodes = [
{
label: 'Files',
icon: 'pi pi-folder',
children: [
{
label: 'Office',
icon: 'pi pi-folder',
children: [
{
label: 'MS Excel',
icon: 'pi pi-folder',
},
{
label: 'MS Word',
icon: 'pi pi-folder',
},
],
},
{
label: 'Home',
icon: 'pi pi-folder',
children: [
{
label: 'Movies',
icon: 'pi pi-folder',
},
],
},
],
},
{
label: 'Docs',
icon: 'pi pi-folder',
children: [
{
label: 'Academic',
icon: 'pi pi-folder',
},
{
label: 'Loans',
icon: 'pi pi-folder',
},
{
label: 'Investments',
icon: 'pi pi-folder',
},
],
},
];
this.nodes2 = [
{
label: 'Topics',
icon: 'pi pi-folder',
children: [
{
label: 'Graphs',
icon: 'pi pi-folder',
},
{
label: 'Linked List',
icon: 'pi pi-folder',
},
],
},
{
label: 'Courses',
icon: 'pi pi-folder',
children: [
{
label: 'DSA',
icon: 'pi pi-folder',
},
{
label: 'GATE',
icon: 'pi pi-folder',
},
{
label: 'DBMS',
icon: 'pi pi-folder',
},
],
},
];
}
}
import { NgModule } from '@angular/core';
import { BrowserModule }
from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { HttpClientModule }
from '@angular/common/http';
import { BrowserAnimationsModule }
from '@angular/platform-browser/animations';
import { AppComponent } from './app.component';
import { NodeService } from './nodeservice';
import { TreeModule } from 'primeng/tree';
import { ButtonModule } from 'primeng/button';
@NgModule({
imports: [
BrowserModule,
BrowserAnimationsModule,
TreeModule,
ButtonModule,
HttpClientModule,
FormsModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent],
providers: [NodeService],
})
export class AppModule { }
输出: