当前位置: 首页
前端开发
Angular4中复选框全选按钮的启用与禁用

Angular4中复选框全选按钮的启用与禁用

热心网友 时间:2026-06-16
转载

在Angular4中实现checkbox全选与按钮禁用,通过点击行切换选中状态并实时统计数量,选中数为0时禁用按钮,否则启用。全选功能依靠isAllChecked与checkAll方法联动。后台查询未完成操作记录并组装视图模型返回。

这个客户的需求有些特别:要求单击表格行时自动勾选复选框(checkbox),同时在没有勾选任何行的情况下,相关按钮必须处于禁用状态。这种交互场景在实际项目中相当普遍,其设计思路也值得参考。

实现代码并不复杂,首先来看 HTML 表格部分的代码:


        

Your ha ve working order(s). if you logout the order(s) will be returned to the Pick Queue and all unconfirmed handling units will remove. Do you want to continue logout"table"> Phase Code Delivery Product {{task.phaseCode}} {{task.saP_DeliveryOrder_ID}} {{task.saP_ProductOrder_ID|removeLeadingZeros}}

接下来是核心的控制逻辑部分,主要实现全选、反选以及按钮启用/禁用状态的自动判断:

​​checkAll(ev: any) {​​
 ​​this.releaseTasks.releaseTaskDetails.forEach((x:any) => x.isChecked = ev.target.checked)​​
 ​​ }​​
 ​​isAllChecked() {​​
 ​​if(this.releaseTasks.releaseTaskDetails.length > 0​​
 ​​return this.canRelease = this.releaseTasks.releaseTaskDetails.every((_:any) => _.isChecked);​​
 ​​ }​​
 ​​return false;​​
 ​​ }​​
 ​​​​​​
    onModalSelectedRows(task
     : 
     any) {
    
    task.
     isChecked 
     = 
     !
     task.
     isChecked;
    
    let 
     len 
     = 
     0;
    
    this.
     releaseTasks.
     releaseTaskDetails.
     forEach((item
     : 
     any) 
     =>
    if(
     item.
     isChecked) {
    
    len 
     ++;
    
    
      }
    
    
      });
    
    if(
     len 
     === 
     0) {
    
    this.
     canRelease 
     = 
     false;
    
    else{
    
    this.
     canRelease 
     = 
     true;
    
    
      }
    
    
      }
    ​​​​

后台 Controller 部分用于查询当前用户未完成的操作记录,并将结果组装成视图模型后返回给前端:

var activityQuery = from op in _context.OperatorActivities    where op.Operator_ID == userName && !op.IsComplete && !op.IsReleased && !op.IsException     select op;
            
            ReleaseTask relesaseTask = new ReleaseTask();

            if(activityQuery.Any()){
                foreach (var activity in activityQuery)
                {
                    ReleaseTaskViewModel taskDetail = new ReleaseTaskViewModel();
                    taskDetail.SAP_DeliveryOrder_ID = getOrderById(activity.DeliveryOrder_ID);
                    taskDetail.SAP_ProductOrder_ID = getProductOrderById(activity.ProductionOrder_ID);
                    taskDetail.PhaseCode = activity.ActivityCode;
                    taskDetail.isChecked = true;
                    taskDetail.OperatorActivityId = activity.OperatorActivity_ID;
                    taskDetail.DeliveryOrder_ID = activity.DeliveryOrder_ID;
                    taskDetail.ProductionOrder_ID = activity.ProductionOrder_ID;
                    taskDetail.Operator_ID = activity.Operator_ID;
                    taskDetail.OrderId = activity.ActivityCode == "MAKE" ? activity.ProductionOrder_ID : activity.DeliveryOrder_ID;
                    taskDetail.isPersistent = isPersistent(activity.ProductionOrder_ID);
                    if(!taskDetail.isPersistent) {
                        relesaseTask.ReleaseTaskDetails.Add(taskDetail);
                    }
                }
            }
            return(Ok(new { success = true, data = relesaseTask}));

总体来看,该需求的关键实现要点如下:点击表格行时切换对应 checkbox 的选中状态,同时实时统计已勾选行的数量。当选中数量为零时,将“Release and logout”按钮置为禁用;有任意行被选中时,按钮则恢复启用。全选复选框通过 isAllChecked()checkAll() 方法实现联动,逻辑清晰且易于扩展。如果遇到类似的场景,直接套用这套基于 Angular 的事件绑定与状态管理模式,即可快速完成开发。

来源:https://www.jb51.net/article/277146.htm

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
如何用拖放在Flask看板应用中更新数据库状态

如何用拖放在Flask看板应用中更新数据库状态

在Flask看板应用中,通过HTML5拖放API结合前端fetch异步POST请求,将拖拽任务的task_id和target_state发送至后端路由;后端接收JSON后更新数据库并提交事务,实现跨列拖拽时实时更新状态。需注意将事件绑定到容器而非子元素,并在ondragover中阻止默认行为以确保drop触发。

时间:2026-07-09 07:01
如何用CSS :has()选择器快速实现悬停span显示相邻div

如何用CSS :has()选择器快速实现悬停span显示相邻div

利用CSS的:has()伪类选择器,通过` bar:has(> baz:hover)+ qux`实现悬停内联元素时显示相邻块级容器,解决了传统相邻兄弟选择器无法跨层级匹配的局限,可用于悬停图标显示详情框等交互场景。需注意浏览器兼容性和性能优化,避免过度使用影响渲染效率。

时间:2026-07-09 07:01
display:block居中段落文本的响应式实现方法

display:block居中段落文本的响应式实现方法

通过`display:block`与`max-width`限制宽度,配合`margin:auto`使段落块水平居中并实现响应式布局;同时用CSS统一控制段落间距,避免脱离文档流,提升可读性与维护性。

时间:2026-07-09 07:01
JavaScript代码去重:高效避免重复编写的技巧

JavaScript代码去重:高效避免重复编写的技巧

将重复代码中的变化点提取为参数,利用ES6模板字符串动态生成选择器,可消除重复、保持一致性。注意参数安全性,必要时进行白名单校验;批量化场景可扩展为数组形式;现代框架中更推荐数据驱动或组件化封装替代手动选择器。

时间:2026-07-09 07:00
使用容器查询单位cqw实现表单输入框相对于祖父容器百分比宽度

使用容器查询单位cqw实现表单输入框相对于祖父容器百分比宽度

利用CSS容器查询单位cqw,表单输入框宽度可直接基于祖父容器计算,绕过中间包装器尺寸干扰,实现简洁响应式布局,无需硬编码或JavaScript,显著降低维护成本,提升嵌套结构下的布局灵活性。

时间:2026-07-09 07:00
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜