angular2.x 多选框事件
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 多选框事件的更多相关文章
- JavaScript:复选框事件的处理
复选框事件的处理 复选框本身也是多个组件的名字相同.所以在定义复选框的同事依然要使用document.all()取得全部的内容. 范例:操作复选框,要求是可以一个个去选择选项,也可以直接全选,全选按钮 ...
- 我的第一个jquery插件:下拉多选框
<!DOCTYPE HTML> <html> <head> <title> New Document </title> <meta n ...
- 【zTree】zTree根据后台数据生成树并动态设置前面的节点复选框的选中状态
0.页面中准备树的ul <ul id="treeDemo10" class="ztree" style="display: none;" ...
- ztree点击节点实现选中/取消复选框
效果 代码 在js中初始化tree时 设置复选框操作只影响子节点 复选框事件,想怎么处理就怎么处理
- element-ui 复选框,实现点击表格当前行选中或取消
背景: 1.表格结构绑定事件 <el-table v-loading="StepsListLoading" :data="StepsListData" b ...
- jquery复选框 选中事件 及其判断是否被选中
jquery复选框 选中事件 及其判断是否被选中 (2014-07-25 14:03:54) 转载▼ 标签: jquery复选框选中事件 分类: extjs jquery 今天做了 显示和不显示密 ...
- jquery点击复选框触发事件给input赋值
体验效果:http://keleyi.com/keleyi/phtml/jqtexiao/31.htm 代码如下: <!DOCTYPE html> <html xmlns=" ...
- easyui 复选框 onClickRow事件与onSelect事件与onCheck事件
在项目中一直存在一个问题,一直都没发现问题的根源在哪里.在我们测试这边也是偶尔会出现.但是每次我去测试的时候也没问题.今天终于找到原因了! 在easyui中点击行和点击复选框触发的事件是不一样的! 点 ...
- 关于Unity中NGUI的Checkbox复选框、Slider滑动条和Button的6种触发回调事件的方式
Checkbox复选框 1.创建一个NGUI背景Sprite1节点 2.打开NGUI---->Open---->Prefab Toolbar---->选择一个复选框节点,拖拽到背景节 ...
随机推荐
- finereport Web工具栏
1.获取报表工具栏按钮 在报表页面中,偶尔会有需要获取工具栏按钮的需求,之前只能通过contentPane.toolbar.options.items[index]来获取,比较不方便,现在我们提供了两 ...
- Twitter的RPC框架Finagle简介
Twitter的RPC框架Finagle简介 http://www.infoq.com/cn/news/2014/05/twitter-finagle-intro
- Qunit 和 jsCoverage使用方法(js单元测试)
Qunit 和 jsCoverage使用方法(js单元测试) 近日在网上浏览过很多有关js单元测试相关的文档,工具,但是,针对Qunit 和 jsCoverage使用方法,缺少详细说明,对于初入前端的 ...
- python split(),os.path.split()和os.path.splitext()函数用法
https://blog.csdn.net/T1243_3/article/details/80170006 # -*- coding:utf-8 -*- """ @ ...
- 接口测试工具 — jmeter(header与cookie的添加)
1.header的添加 添加HTTP信息头管理器 填写header 2.添加cookie 添加HTTP Cookie管理器 添加cookie值
- POJ 3613 Cow Relays (floyd + 矩阵高速幂)
题目大意: 求刚好经过K条路的最短路 我们知道假设一个矩阵A[i][j] 表示表示 i-j 是否可达 那么 A*A=B B[i][j] 就表示 i-j 刚好走过两条路的方法数 那么同理 我们把 ...
- git rm与直接rm的区别
git rm 行为: 1.删除一个文件 2.将被删除的这个文件纳入缓存区 $ git rm a rm 'a' $ git status On branch master Changes to be c ...
- discuz手机版图片缩略图大小设置/修改清晰度
discuz手机版 图片缩略图大小设置/修改清晰度 \template\default\mobile\forum\discuzcode.htm和 \template\default\touch\for ...
- JSP使用网站访问人数统计功能,方法与技巧
实现网站访问人数统计功能的步骤: 创建静态登录页面,并指定表单提交由登录处理页面进行处理. 创建登录处理页面获得登录信息,查询数据库,判断该用户是否注册,如果该用户已注册,把已登录用户的信息保存在一个 ...
- PHP基础学习代码案例
<?php print 'hello world ! '; echo '<br/>'; ?> <?php $number="16"; $number2 ...