news 2026/5/1 10:59:26

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/5/1 7:30:28

性能测试实战:目的、策略与执行详解

性能测试实战&#xff1a;目的、策略与执行详解一、性能测试的核心目的性能测试通常围绕两个核心目标展开&#xff0c;它们分别关注系统能力的效率和极限。目的核心指标停止标准 / “失败”标志1. 测试系统的最大处理能力TPS&#xff08;每秒事务数&#xff09;找到 “性能拐点…

作者头像 李华
网站建设 2026/5/1 8:33:37

从零开始全面掌握 HTTPS

&#xff1a;开发者安全部署终极指南&#xff08;完整版&#xff09; 作者&#xff1a;安全与 Web 架构工程师 最后更新&#xff1a;2025年12月15日 适用读者&#xff1a;Web 开发者、运维工程师、安全初学者、高校学生、技术管理者 阅读前提&#xff1a;了解基本的 Web 请求概…

作者头像 李华
网站建设 2026/5/1 10:52:09

线性表之队列

队列是限制在两端进行插入操作和删除操作的线性表允许进行存入操作的一端称为“队尾”允许进行删除操作的一端称为“队头”当线性表中没有元素时&#xff0c;称为“空队”特点 &#xff1a;先进先出&#xff08;FIFO&#xff09;或后进后出普通队列的缺点&#xff1a; 出队后前…

作者头像 李华
网站建设 2026/4/23 17:39:19

C++ 多线程开发:从零开始的完整指南

一、为什么需要多线程&#xff1f; 在现代计算机体系结构中&#xff0c;多核处理器已成为标准配置。多线程编程允许我们充分利用这些计算资源&#xff0c;通过并行执行任务来提升程序性能。C11之前&#xff0c;多线程编程依赖于平台特定的API&#xff08;如POSIX pthreads、Win…

作者头像 李华
网站建设 2026/5/1 10:49:52

大型公司中优秀工程师为何也会写出糟糕代码

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

作者头像 李华
网站建设 2026/4/26 16:35:14

13、AWK 基础与正则表达式入门

AWK 基础与正则表达式入门 1. AWK 文件内容显示与过滤 AWK 命令可用于过滤文件内容,甚至处理非常大的文件。在过滤文件之前,我们可以先打印整个文件,以熟悉命令的语法。以下是打印 /etc/passwd 文件所有行的命令: $ awk { print } /etc/passwd这等同于使用 $0 变…

作者头像 李华