news 2026/4/18 7:55:48

Angular demo(简化版,但保留选中、取消、Filter 应用、再次查看的逻辑)代码详细介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Angular demo(简化版,但保留选中、取消、Filter 应用、再次查看的逻辑)代码详细介绍

业务逻辑梳理

业务流程:

  1. 初始化:
  • 可能有历史选中值(previousAppliedFilters)

  • 把历史值 normalize 成对象数组 { name, value, checked }

  1. 选中 / 取消 Test Type:
  • 点击 checkbox 或标签上的 ×

  • 对象的 checked 属性同步更新

  • 选中列表 selectedTestType / selectedLocationTestType 同步更新

  1. 应用 Filter:
  • 点击 “Apply Filter”

  • 将选中值整理(可选择发送给后端,或者 emit 给父组件)

  • 可以保存为 previousAppliedFilters 方便下次打开初始化

  1. 再次查看:
  • Filter 应用后,重新打开弹窗

  • 初始化逻辑会用 previousAppliedFilters 恢复选中状态

  • UI 显示已选项(标签 + ×)


scheduling-filter.component.html

<!--scheduling-filter.component.html--><div><h3>Test Type Filter</h3><div*ngFor="let item of testTypeList"><input type="checkbox"[checked]="item.checked"(change)="onChecked(item, 'testType')"/>{{item.name}}</div><div><h4>Selected Test Types:</h4><span*ngFor="let item of selectedTestType">{{item.name}}<button(click)="removeTestType(item)">×</button></span></div><button(click)="applyFilter()">Apply Filter</button></div>

scheduling-filter.component.ts

// scheduling-filter.component.tsimport{Component,OnInit,Output,EventEmitter}from'@angular/core';@Component({selector:'app-scheduling-filter',templateUrl:'./scheduling-filter.component.html',styleUrls:['./scheduling-filter.component.css']})exportclassSchedulingFilterComponentimplementsOnInit{@Output()appliedFilter=newEventEmitter<any>();// 模拟 Test Type 数据testTypeList=[{name:'BDS',value:'BDS',checked:false},{name:'DRE',value:'DRE',checked:false},{name:'MRI',value:'MRI',checked:false}];selectedTestType:any[]=[];searchedTestType:any[]=[];previousAppliedFilters:any={testType:['BDS']// 历史选中};ngOnInit():void{// 初始化历史值if(this.previousAppliedFilters.testType?.length){this.selectedTestType=this.previousAppliedFilters.testType.map((t:any)=>{if(typeoft==='string')return{name:t,value:t,checked:true};if(t?.name)return{...t,checked:true};returnnull;}).filter(Boolean);// 同步 testTypeList checkedthis.testTypeList.forEach(item=>{item.checked=this.selectedTestType.some(sel=>sel.name===item.name);});this.searchedTestType=[...this.testTypeList];}}onChecked(event:any,selectedFilter:string){consttargetList=selectedFilter==='testType'?this.selectedTestType:[];this.testTypeList.forEach(item=>{if(item.name===event.name){item.checked=!item.checked;}});// 更新 selectedTestTypethis.selectedTestType=this.testTypeList.filter(item=>item.checked);}removeTestType(item:any){item.checked=false;this.selectedTestType=this.selectedTestType.filter(sel=>sel.name!==item.name);}applyFilter(){console.log('Apply Filter Selected:',this.selectedTestType);this.appliedFilter.emit({testType:this.selectedTestType.map(t=>({...t}))// 深拷贝});// 保存历史选中this.previousAppliedFilters.testType=this.selectedTestType.map(t=>t.name);}}

app.component.html

<app-scheduling-filter(appliedFilter)="onAppliedFilter($event)"></app-scheduling-filter>

app.component.ts

onAppliedFilter(selected:any[]){console.log('父组件收到选中数据:',selected);}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 1:39:55

深入 Flutter 自定义 RenderObject:打造高性能异形滚动列表

在 Flutter 开发中&#xff0c;ListView、GridView等通用滚动组件能满足 80% 的常规场景&#xff0c;但面对电商异形商品展示、社交 APP 个性化卡片流、数据可视化仪表盘等复杂 UI 需求时&#xff0c;仅靠组合现有 Widget 往往会遇到性能瓶颈或视觉效果限制。此时深入 Flutter …

作者头像 李华
网站建设 2026/4/8 18:37:01

33、分布式控制器设计与精确矩动力学计算

分布式控制器设计与精确矩动力学计算 1. 精确矩动力学计算示例 在定义配分函数的求和中,其缩减指标可以通过史密斯标准型以更系统的形式得到。假设矩阵 (P\in Z^{q\times n}) 表示 (n) 种物质的 (q) 个守恒定律。例如,在竞争结合示例中,(P = [1, 0, 0, 1, 1; 0, 1, 0, 1, …

作者头像 李华
网站建设 2026/4/16 19:01:36

35、机器学习在联合分类与分割及鲁棒凸优化中的应用

机器学习在联合分类与分割及鲁棒凸优化中的应用 联合分类与分割中的关键技术 在图像的联合分类与分割领域,涉及到诸多关键的理论和算法。 1. 线积分转换与能量流计算 - 最初有公式 $\frac{\partial E}{\partial \xi_i} = \int_{\hat{c}} [r_o(I (x), \hat{c}) - r_b(I (…

作者头像 李华
网站建设 2026/4/18 7:03:51

【大数据环境安装指南】ZooKeeper搭建Hadoop高可用集群教程

文章目录前言一、 核心架构说明二、 环境准备&#xff08;所有节点执行&#xff09;2.1 服务器规划&#xff08;3 节点&#xff09;2.2 基础环境初始化2.2.1 关闭防火墙和 SELinux&#xff08;所有节点&#xff09;2.2.2 配置主机名和 hosts 映射2.2.3 安装 JDK&#xff08;Had…

作者头像 李华
网站建设 2026/4/9 5:12:31

6、深入探索脚本条件判断与代码片段创建

深入探索脚本条件判断与代码片段创建 1. 条件判断基础操作 在脚本编写中,条件判断是实现脚本逻辑的关键部分。我们可以使用 JG 语句来检查文件和目录,以下是一个检查目录是否存在的示例: #!/bin/bash mydir=~/mydir if [ -d "$mydir" ]; thenecho "Dir…

作者头像 李华
网站建设 2026/4/18 7:36:44

16、利用AWK和Python进行数据处理与脚本编写

利用AWK和Python进行数据处理与脚本编写 1. 使用AWK优化lastlog输出 在处理 lastlog 命令的输出时,我们可能只对部分数据感兴趣,比如用户名和最后登录时间。AWK可以作为强大的数据过滤器,实现水平和垂直的数据过滤。 1.1 水平过滤行 通过将 lastlog 的输出通过管道传…

作者头像 李华