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

实现已选查询条件的上下移动。结合了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. POJ1009 Edge Detection

    题目来源:http://poj.org/problem?id=1009 题目大意: 某图像公司用run length encoding(RLE)的方式记录和存储了大量的图像.程序的目标是读入压缩后的图 ...

  2. bzoj1004 [HNOI2008]Cards【Burnside/Polya】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1004 一道好题,但并不是好在融合了三个“考点”(计数,背包dp,逆元),其实背包dp以及求逆 ...

  3. mysql事务锁表

    -- 查看被锁住的SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 等待锁定SELECT * FROM INFORMATION_SCHEMA.INNO ...

  4. sql 更新 批量更新 更新得到主键

    import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.jdbc.c ...

  5. python模块之datetime方法详细介绍

    datetime Python提供了许多内置模块用于操作时间日期,如calendar,time,datetime,这篇文章主要是对datetime进行汇总,datetime模块的借口实现原则更加直观, ...

  6. sql For update

    for update 的作用和目的:select for update 是为了在查询时,对这条数据进行加锁,避免其他用户以该表进行插入,修改或删除等操作,造成表的不一致性. 几个类似的场景: sele ...

  7. sql新增字段注意事项

    新增字段的类型.长度(精度)是否合适 解决方法: 跟应用明确加字段和改字段的风险,确认新增字段类型正确.长度(精度)合适. 以及跟应用明确老数据是否要订正?如何订正?新增列是否非空?是否有默认值等等. ...

  8. bootstrap栅格系统的实现

    bootstrap提供了一个非常实用的栅格系统,可以实现响应式的网格布局,原理其实很简单,利用了float.百分比的宽度和@media的配合实现响应式,bootstrap默认把一行分为了12列,提供了 ...

  9. smarty模板引擎之if, elseif else

    Smarty 中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if 必须于 /if 成对出现. 可以使用 else 和 elseif 子句. 可以使用以下条 ...

  10. SpringBoot | 第五章:多环境配置

    前言 写上一篇看英文资料,耗费了心力呀,这章,相对来说简单点.也比较熟悉,但是这很实用.不扯了,开始~ 多环境配置 maven的多环境配置 springboot多环境配置 总结 老生常谈 多环境配置 ...