700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > angular7 checkbox的全选 反选 单选 多选

angular7 checkbox的全选 反选 单选 多选

时间:2023-02-20 07:55:44

相关推荐

angular7 checkbox的全选 反选 单选 多选

angular7 checkbox全选、反选、单选和多选

用angular7 写网页的时候,遇见了checkbox的坑,晚上着了很多都没有给出明确的实现方法,也看懵了,就自己写了一个,不多说了,直接上代码

首先设置变量

export class UserComponent implements OnInit {// 全选状态checkSum : boolean;// 数据check的状态数组userStatus: boolean[] = [];// 数据集合数组status: any[] = [];}

用status变量获取数组集合数据

import {Component, OnInit } from '@angular/core';import {HttpService } from '../../../common/service/http.service';@Component({selector: 'app-user',templateUrl: './ponent.html',styleUrls: ['./ponent.css']})export class UserComponent implements OnInit {// 全选状态checkSum : boolean;// 数据check的状态数组userStatus: boolean[] = [];// 数据集合数组status: any[] = [];// 用于渲染数据userdata: any;constructor(private http: HttpService,) {}ngOnInit() {this.userInfo();}userInfo(pageSize, pageNo) {// 用get方法获取数据 看写的是什么方法了,post也行// 主要是获取数据,获取数据就不做讲解了this.http.getData().subscribe((response: any) => {if (response.code === 200 || response.ok) {// 获取数据this.userdata = response;// 获取Json里的数组数据this.status = response.data;} else {alert(response.message);return false;}});}

全选事件

checkAll() {// 全选框的状态this.checkSum = this.checkSum ? false : true;// 如果全选框状态为trueif (this.checkSum) {// 根据页面现实的数据长度,把全部数据的check状态赋值为truefor (let i = 0; i < this.status.length; i++) {// 给数据的复选框赋值truethis.userStatus[i] = true;}// 如果全选框状态不是true} else {// 根据页面当前的数据长度,把全部数据的checke状态赋值为falsefor (let i = 0; i < this.status.length; i++) {// 给数据的复选框赋值truethis.userStatus[i] = false;}}}

单选事件

checked(i) {// 根据当前i的顺序,判断check的状态this.userStatus[i] = this.userStatus[i] ? false : true;// 设定自加变量值,并初始化let k = 0;// 循环查看数据长度查看状态for (let j = 0; j < this.status.length; j++) {// 查看所有状态是否都等于trueif (this.userStatus[j] === true) {// 数据状态等于true,则自加变量k加1k++;if (k === this.status.length) {// 返回全选状态为truereturn this.checkSum = true;}}}}

反选事件

checkAllNo() {// 循环查看userStatus是否由false的状态for (let i = 0; i < this.status.length; i++ ) {// 如果userStatus有false的状态if (this.userStatus[i] === false) {// 更改全选框的状态this.checkSum = false;}}}

html界面

用angular7里的[(chencked)] 来获取状态false还是true

<div><div><input type="checkbox" [(checked)]="checkSum" (click)="checkAll()"></div><div>编号</div></div><div *ngFor="let item of userdata.data;let i = index"><div><input type="checkbox" [(checked)]="userStatus[i]" (click)="checked(i);checkAllNo()"></div><div>{{item.account}}</div></div>

ts里的完整代码

import {Component, OnInit } from '@angular/core';import {HttpService } from '../../../common/service/http.service';@Component({selector: 'app-user',templateUrl: './ponent.html',styleUrls: ['./ponent.css']})export class UserComponent implements OnInit {// 全选状态checkSum : boolean;// 数据check的状态数组userStatus: boolean[] = [];// 数据集合数组status: any[] = [];// 用于渲染数据userdata: any;constructor(private http: HttpService,) {}ngOnInit() {this.userInfo();}userInfo(pageSize, pageNo) {// 用get方法获取数据 看写的是什么方法了,post也行// 主要是获取数据,获取数据就不做讲解了this.http.getData().subscribe((response: any) => {if (response.code === 200 || response.ok) {// 获取数据this.userdata = response;// 获取Json里的数组数据this.status = response.data;} else {alert(response.message);return false;}});}/*** check全选事件*/checkAll() {// 全选框的状态this.checkSum = this.checkSum ? false : true;// 如果全选框状态为trueif (this.checkSum) {// 根据页面现实的数据长度,把全部数据的check状态赋值为truefor (let i = 0; i < this.status.length; i++) {// 给数据的复选框赋值truethis.userStatus[i] = true;}// 如果全选框状态不是true} else {// 根据页面当前的数据长度,把全部数据的checke状态赋值为falsefor (let i = 0; i < this.status.length; i++) {// 给数据的复选框赋值truethis.userStatus[i] = false;}}}/*** check单选事件* @param i 当前位置*/checked(i) {// 根据当前i的顺序,判断check的状态this.userStatus[i] = this.userStatus[i] ? false : true;// 设定自加变量值,并初始化let k = 0;// 循环查看数据长度查看状态for (let j = 0; j < this.status.length; j++) {// 查看所有状态是否都等于trueif (this.userStatus[j] === true) {// 数据状态等于true,则自加变量k加1k++;// k+1是为了等于数组长度if ((k + 1) === this.status.length) {// 返回全选状态为truereturn this.checkSum = true;}}}}/*** 全选后,随意点掉一个复选框,全选框则被点掉*/checkAllNo() {// 循环查看userStatus是否由false的状态for (let i = 0; i < this.status.length; i++ ) {// 如果userStatus有false的状态if (this.userStatus[i] === false) {// 更改全选框的状态this.checkSum = false;}}}/*** 删除选取的N个id*/idsDelete() {let num = 0; // 为了存储ID,赋予ids数据位置const ids = []; // 选择事件后,给ids至空// 循环查看userStatus的状态for (let i = 0; i < this.status.length; i++) {// 如果userStatus[i]的状态为trueif (this.userStatus[i] === true) {// 则给ids赋值,赋值顺序根据numids[num] = this.status[i].id;// 每次赋值,num + 1num++;}}// 一下为访问接口什么的,没必要看了const data = {'ids': ids.toString()};const userIdsDelete = confirm('确认屏蔽以上' + num + '个会员?');if (userIdsDelete) {this.http.getData(data).subscribe((response: any) => {if (response.code === 200 || response.ok) {this.ngOnInit();} else {alert(response.message);return false;}});} else {return false;}}}

以上就是我写的,有问题或者不明白的的可以评论留言。

工作不忙的时候,回认真回复的。

不好请勿骂,谢谢。

转载的时候,请说明出处。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。