angular2.x - 4.x  的多选框事件

ng2 -- ng4 反正都是用es6 都统称为2.x吧。

下面贴代码

html界面

<div class="row">
<div class="col-md-9">
<table>
<thead>
<tr>
<th><input type="checkbox" (click)="selectAll($event)" [checked]="isSelectedAll()" />全选</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of itemList">
<td>
<input type="checkbox" [checked]="isCheck(item)" (click)="clickItem($event,item)" />
</td>
<td>{{ item }}</td>
</tr>
</tbody>
</table>
</div>
</div>

ts代码:

import { Component, OnInit } from '@angular/core';
import { RankingService } from '../ranking/services/ranking.service'; @Component({
selector: 'app-classify',
templateUrl: './classify.component.html',
styleUrls: ['./classify.component.css']
})
export class ClassifyComponent implements OnInit {
public itemList: Array<any>;
public selected: Array<any>;
public allList: Array<any>;
public idListAll: Array<any>;
constructor() {
this.itemList = [1, 2, 3, 4];
this.allList = [1, 2, 3, 4];
this.idListAll = [1, 2, 3, 4];
this.selected = [];
}
ngOnInit() {}
// 点击时执行
clickItem(e, item) {
const checkbox = e.target;
const action = (checkbox.checked ? 'add' : 'remove');
this.updateSelected(action, item);
}
// 用来判断input 的checked
isCheck(item) {
return this.selected.findIndex(value => value == item) >= 0;
}
// 执行增加、删除
private updateSelected(action, item) {
if (action == 'add' && this.selected.findIndex(value => value == item) == -1){
console.log('执行添加');
this.selected.push(item);
}
if (action == 'remove' && this.selected.findIndex(value => value == item) != -1){
console.log('执行删除');
this.selected.splice(this.selected.findIndex(value => value == item), 1);
}
console.log(this.selected);
}
// 全选点击事件
selectAll(e) {
const checkbox = e.target;
const action = (checkbox.checked ? 'add' : 'remove');
this.allList.forEach((elt, i, array) => {
const entity = elt;
this.updateSelected(action, entity);
});
} // 判断是否全选
isSelectedAll() {
return this.isContained(this.selected, this.idListAll);
}
// 判断b数组是否包含在a数组中
private isContained(a, b) {
if (!(a instanceof Array) || !(b instanceof Array)) return false;
if (a.length < b.length) return false;
const aStr = a.toString();
for (let i = 0, len = b.length; i < len; i++) {
if (aStr.indexOf(b[i]) == -1) {
return false;
}
}
return true;
}
}

界面效果

全选

添加

删除

最近才刚刚开始接触ng2 ,每天进步一点点,总有一天我也会很6的。

angular2.x 多选框事件的更多相关文章

  1. JavaScript:复选框事件的处理

    复选框事件的处理 复选框本身也是多个组件的名字相同.所以在定义复选框的同事依然要使用document.all()取得全部的内容. 范例:操作复选框,要求是可以一个个去选择选项,也可以直接全选,全选按钮 ...

  2. 我的第一个jquery插件:下拉多选框

    <!DOCTYPE HTML> <html> <head> <title> New Document </title> <meta n ...

  3. 【zTree】zTree根据后台数据生成树并动态设置前面的节点复选框的选中状态

    0.页面中准备树的ul <ul id="treeDemo10" class="ztree" style="display: none;" ...

  4. ztree点击节点实现选中/取消复选框

    效果 代码 在js中初始化tree时 设置复选框操作只影响子节点 复选框事件,想怎么处理就怎么处理

  5. element-ui 复选框,实现点击表格当前行选中或取消

    背景: 1.表格结构绑定事件 <el-table v-loading="StepsListLoading" :data="StepsListData" b ...

  6. jquery复选框 选中事件 及其判断是否被选中

    jquery复选框 选中事件 及其判断是否被选中 (2014-07-25 14:03:54) 转载▼ 标签: jquery复选框选中事件 分类: extjs jquery   今天做了 显示和不显示密 ...

  7. jquery点击复选框触发事件给input赋值

    体验效果:http://keleyi.com/keleyi/phtml/jqtexiao/31.htm 代码如下: <!DOCTYPE html> <html xmlns=" ...

  8. easyui 复选框 onClickRow事件与onSelect事件与onCheck事件

    在项目中一直存在一个问题,一直都没发现问题的根源在哪里.在我们测试这边也是偶尔会出现.但是每次我去测试的时候也没问题.今天终于找到原因了! 在easyui中点击行和点击复选框触发的事件是不一样的! 点 ...

  9. 关于Unity中NGUI的Checkbox复选框、Slider滑动条和Button的6种触发回调事件的方式

    Checkbox复选框 1.创建一个NGUI背景Sprite1节点 2.打开NGUI---->Open---->Prefab Toolbar---->选择一个复选框节点,拖拽到背景节 ...

随机推荐

  1. 烂笔头-Spring3

    1.spring相关jar包的导入 2.配置文件bean.xml <?xml version="1.0" encoding="UTF-8"?> &l ...

  2. 面向对象 - 封装/property - 总结

    面向对象 - 封装: 封装:在类定义阶段,以__开头的属性名发生了变形 eg: __x --> _A__x / __foo --> _A__foo 1.特点: 1.在类外部无法直接访问 _ ...

  3. javascript把RGB指定颜色转换成十六进制颜色(Converting R,G,B values to HTML hex notation)

    Prologue 看见一篇非常好的外国文章,Making annoying rainbows in javascript,事实上我当时非常想把它翻译下来的,可是对于一个连六级都没过的人确实有点难度,一 ...

  4. Appium自动化环境搭建(windows+Android)

    开始安装: 1.首先搭建好Android开发环境(eclipse+jdk+android的sdk包+Level17或以上的版本api) 2.设置ANDROID_HOME系统变量为你的Android S ...

  5. (转)java类到底是如何加载并初始化的?

    Java虚拟机如何把编译好的.class文件加载到虚拟机里面?加载之后如何初始化类?静态类变量和实例类变量的初始化过程是否相同,分别是如何初始化的呢?这篇文章就 是解决上面3个问题的. 若有不正之处, ...

  6. HTML5 canvas绘图基本使用方法

    <canvas></canvas>是HTML5中新增的标签,用于绘制图形,实际上,这个标签和其他的标签一样,其特殊之处在于该标签可以获取一个CanvasRenderingCon ...

  7. android studio上传项目到github报错Successfully created project 'Demo' on GitHub, but initial commit failed:

    今天博主正在愉快地学习在AndroidStudio中使用Git,结果报了下面这个错∑(っ°Д°;)っ: Can't finish GitHub sharing process Successfully ...

  8. 简明python教程六----编写一个python脚本

    备份程序: #!/usr/bin/python #Filename:backup_ver1.py import os import time source = ['/home/liuxj/python ...

  9. 用python简便地抓取刘昊然的写真(17行代码)

    17行python代码抓取刘昊然图片之家的写真 用python来爬取网页信息是很简便的.因为它有很多库来帮助我们实现我们想要的功能.本实验用到的库有:requests和bs4中的BeautifulSo ...

  10. linux 或c 时间相关处理类型和函数

    注意1.精确级别,纳秒级别原型long  clock_gettime (clockid_t which_clock, struct timespec *tp); 头文件time.hwhich_cloc ...