news 2026/6/11 13:30:16

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/6/10 17:50:05

基于STM32与机智云平台的智能台灯系统设计与实现

基于STM32与机智云平台的智能台灯系统设计与实现 摘要 本文设计并实现了一种基于STM32F103C8T6单片机与机智云平台的智能台灯系统。该系统整合了多维环境感知与智能照明控制功能,通过DHT11温湿度传感器(精度:温度2℃、湿度5%)、HC-SR04超声波传感器(测距范围2-400cm,精…

作者头像 李华
网站建设 2026/6/10 2:12:02

阻塞队列:三组核心方法全对比

深入解析阻塞队列&#xff1a;三组核心方法全对比与实战指南引言&#xff1a;为什么需要阻塞队列&#xff1f;在多线程编程中&#xff0c;线程间的数据共享和通信是一个常见而复杂的问题。传统的共享变量方式需要开发者手动处理线程同步、等待/通知机制&#xff0c;这既容易出错…

作者头像 李华
网站建设 2026/6/11 9:09:41

性能测试实战:混合场景与稳定性测试详解

性能测试实战&#xff1a;混合场景与稳定性测试详解一、性能测试场景实战回顾1. 单接口基准测试&#xff08;已完成&#xff09;目的&#xff1a;寻找单个接口的性能拐点&#xff08;最佳并发 & 最大TPS&#xff09;。策略&#xff1a;从小并发&#xff08;如10&#xff09…

作者头像 李华
网站建设 2026/6/7 9:18:29

37、高阶多智能体系统具有对抗交互和切换拓扑的二分共识研究

高阶多智能体系统具有对抗交互和切换拓扑的二分共识研究 1. 引言 在过去的10 - 15年里,多智能体系统和共识问题受到了广泛关注。多数研究假设智能体通过协作来达成共识,即它们为了共同目标交换信息。然而,在许多实际场景中,两个智能体可能将彼此视为对手,即便能获取对方…

作者头像 李华
网站建设 2026/6/10 19:09:07

10、函数与流编辑器的使用指南

函数与流编辑器的使用指南 在脚本编写的世界里,函数和流编辑器是两个强大的工具,它们能显著提升脚本的效率和可维护性。下面将详细介绍函数的使用以及流编辑器的相关内容。 函数的使用 1. 数组传递 在函数调用时,并非所有传递的值都是单个值,有时需要传递数组。以下是传…

作者头像 李华
网站建设 2026/6/10 5:43:19

交通信号仿真软件:Vistro_(2).交通信号控制基础理论

交通信号控制基础理论 1. 交通信号控制的基本概念 交通信号控制是指通过信号灯的红、黄、绿三种颜色的变化&#xff0c;来指导和管理交通流的运行。这种控制方式可以有效地减少交通拥堵&#xff0c;提高道路的通行能力&#xff0c;确保交通安全。在交通信号仿真软件中&#xff…

作者头像 李华