最近在做一个树节点的上下移动然后实现排序的问题。直接看图:

实现已选查询条件的上下移动。结合了primeng 的picklist 组件。

下面是html代码

  <p-tabPanel header="查询条件">
<div class="row selfHeight" style="margin-left: 10px;">
<div class="col-4 selfHeight" style="padding: 0px;">
<div style="margin:0 0 10px 0">所有可选查询条件</div>
<div style="margin: 0px 6px;width: 100%">
<select class="select form-control radius selfHeight"
style="padding:0.2rem 0.75rem;height:30px;margin-left: -6px;width: 100%"
(change)="changeQueryConditionSelect($event.target.value)">
<option *ngFor="let values of selectData" value="{{values.attrGroupId}}">
{{values.attrGroupName}}
</option>
</select>
</div>
<p-tree [value]="leftQueryCondition" selectionMode="multiple" [(selection)]="selectLeftCondition"
(onNodeSelect)="queryConditionLeftNodeSelect($event)"
[style]="{'height':'calc(100% - 64px)','width':'100%','overflow':'auto','border-color':'#e0e0e0','color':'#333333','font-size':'13px'}">
</p-tree>
</div>
<div class="col-2" style="padding: 0px;margin-top: 120px;text-align: center">
<div style="margin-bottom: 10px">
<button type="button" class="btn btn-clickStyle radius pointer" (click)="moveRightCondition()">
<i class="fa fa-angle-double-right" aria-hidden="true"></i>
</button>
</div>
<div>
<button type="button" class="btn btn-clickStyle radius pointer" (click)="moveLeftCondition()">
<i class="fa fa-angle-double-left" aria-hidden="true"></i>
</button>
</div>
</div>
<div class="col-4 selfHeight" style="padding: 0px;">
<div style="margin:0 0 10px 0">已选查询条件</div>
<p-tree [value]="rightQueryCondition" selectionMode="multiple" [(selection)]="selectRightCondition"
(onNodeSelect)="queryConditionRightSelect($event)"
[style]="{'height':'calc(100% - 34px)','width':'100%','overflow':'auto','border-color':'#e0e0e0','color':'#333333','font-size':'13px'}">
<ng-template let-node pTemplate="default">
{{node.label}}
<select [(ngModel)]="node.symbol" type="text">
<option *ngFor="let values of operation" value="{{values.enumvalCode}}">{{values.enumvalName}}</option>
</select>
</ng-template>
</p-tree>
</div>
<div class="col-2" style="padding: 0px;margin-top: 120px;text-align: center">
<div style="margin-bottom: 10px">
<button type="button" class="btn btn-clickStyle radius pointer" (click)="moveUp()">
<i class="fa fa-angle-up" aria-hidden="true"></i>
</button>
</div>
<div>
<button type="button" class="btn btn-clickStyle radius pointer" (click)="moveDown()">
<i class="fa fa-angle-down" aria-hidden="true"></i>
</button>
</div>
</div>
</div> </p-tabPanel>

下面是ts代码:

moveUp() {  //右侧选只选中一个时才能移动
if (this.selectRightCondition && this.selectRightCondition.length==1) {
let data = this.rightQueryCondition;
let index = 0;
data.forEach((record, i) => {
if (record['fieldCode'] === this.selectRightCondition[0]['fieldCode']) {
return index = i;
}
})
var temp;
if (index === 0 || index > data.length - 1) {
this.rightQueryCondition = data;
} else {
temp = data[index];
data[index] = data[index - 1];
data[index - 1] = temp;
this.rightQueryCondition = data;
}
}
} moveDown() {
if (this.selectRightCondition && this.selectRightCondition.length==1) {
let data = this.rightQueryCondition;
let index = 0;
data.forEach((record, i) => {
if (record['fieldCode'] === this.selectRightCondition[0]['fieldCode']) {
return index = i;
}
})
var temp;
if (index === data.length - 1 || index < 0) {
this.rightQueryCondition = data;
} else {
temp = data[index];
data[index] = data[index + 1];
data[index + 1] = temp;
this.rightQueryCondition = data;
}
}
}

Angular 2 树节点的上下移动问题的更多相关文章

  1. js 查找树节点 数组去重

    //查找树节点function findData(curOrg, id) { var array = []; if ((typeof curOrg == 'object') && (c ...

  2. 展开easyui 树节点到某个点

    $(function () { $('#tt').tree({ url: '/IS/Department/JsonTree?companyID=@(Request.QueryString[" ...

  3. JPA,EclipseLink 缓存机制学习(一) 树节点搜索问题引发的思考

    最近在项目在使用JPA+EclipseLink 的方式进行开发,其中EclipseLink使用版本为2.5.1.遇到一些缓存方面使用不当造成的问题,从本篇开始逐步学习EclipseLink的缓存机制. ...

  4. ligerui_ligerTree_005_动态增加“树”节点

    动态添加ligerTree节点:效果图: 源码地址:http://download.csdn.net/detail/poiuy1991719/8571255 <%@ page language= ...

  5. ext 树节点操作

    ext 树节点操作 tree :树    node:节点 1.全部展开 tree.expandAll(); 2.全部收缩 tree.collapseAll(); 3.得到父节点 node.parent ...

  6. Extjs整体加载树节点

    Ext.onReady(function () {             Ext.define('company', {                 extend: 'Ext.data.Mode ...

  7. ExtJs 4.2 treePanel 点击树节点 传送参数到后台(多个参数)

    //***********************************************左边树开始********************************************** ...

  8. 问题-在TreeView使用时,发现选中的树节点会闪烁或消失

    问题:在工程中选中一个树节点,鼠标焦点在树上,做某种操作时发现选中的点会消失?原因:如果只是BeginUpdate后,没有调用EndUpdate,树会全空.应该是BeginUpdate方法会刷新树,但 ...

  9. easyui-treegrid移除树节点出错

    easyui-treegrid移除树节点出错 >>>>>>>>>>>>>>>>>>>& ...

随机推荐

  1. thinkphp5更新时验证数据

    在编辑页面form表单中添加一个隐藏域:<input type="hidden" name="表中id字段名" value="get方式传过来的 ...

  2. 调试JMETER脚本的5种方法

    如果你曾经设计过JMeter脚本,我敢打赌你至少有一次弄清楚Json Extractor无法正常工作的原因.你猜怎么着?我去过那儿! 你知道为什么最好的JMeter Performance Engin ...

  3. tomcat memecached session 共享同步问题的解决

    事件缘由:一个主项目“图说美物”,另外一个子功能是品牌商的入驻功能,是跟主项目分开的项目,为了共享登录的用户信息,而实现session共享,俩个tomcat,一个tomcat6,一个tomcat7 w ...

  4. centos禁止ping

    1.修改配置文件/etc/sysctl.conf 在这个文件的最后添加一行: net.ipv4.icmp_echo_ignore_all=1 (0 代表允许 1 代表禁止) 2.执行sysctl -p ...

  5. 11-----broder(边框)

    边框 border:边框的意思,描述盒子的边框 边框有三个要素: 粗细 线性样式 颜色 如果颜色不写,默认是黑色.如果粗细不写,不显示边框.如果只写线性样式,默认的有上下左右 3px的宽度,实体样式, ...

  6. OpenStack Weekly Meeting 2015.07.17

    Reviews(Company) 1 Mirantis 11562 HP 1653 Huawei 15 Reviews(Persons) 1 Ekaterina Chernova ✻ 2852 Kir ...

  7. 嵌入式CISC模型机设计

    一.     课程设计的题目和内容 题目:设计一台嵌入式CISC模型计算机 采用定长CPU周期.联合控制方式,并运行能完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下: 任意输入5个整数, ...

  8. mybatis + log4j2 问题 java.lang.NoClassDefFoundError: org/apache/logging/log4j/spi/AbstractLoggerWrapper

    root cause java.lang.NoClassDefFoundError: org/apache/logging/log4j/spi/AbstractLoggerWrapper 网上资料比较 ...

  9. linq 读取xml

    xml 文件如下: <?xml version="1.0" encoding="utf-8" ?><nodes> <node> ...

  10. android下的异步任务

    异步任务一般用在加载一些网络资源的时候用,主要的实现方法是新建一个类来继承AsyncTask这个父类,然后复写该类下面的一些方法,其中doInBackground方法是必须要的,下面看代码 packa ...