You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS代码迁移至Angular 10:代码解析与迁移方案咨询

AngularJS代码功能解析与Angular 10迁移方案

一、原AngularJS代码功能解析

这段代码的核心逻辑是对两组安全类数据进行筛选和标记,具体如下:

  • 从selectedSecurityClasses数组中筛选出operation属性为'CREATE'的项,存入secClassesToCreate(注:该变量后续未被使用,属于遗留代码)
  • 从selectedSecurityClasses数组中筛选出未定义operation属性的项,存入selectedSecClasses
  • 遍历businessDataRule.businessRuleSecurities数组,对每一项进行检查:如果在selectedSecClasses中找不到id与当前项securityClassId匹配的元素,就为当前项添加operation: 'DELETE'标记,标记该条目需要被删除

二、Angular 10迁移方法

Angular 10基于TypeScript,不再依赖AngularJS的$filter服务,直接使用原生数组API即可实现相同逻辑,具体迁移步骤如下:

1. 替换$filter筛选逻辑

用数组原生的filter方法替代AngularJS的$filter('filter'):

// 筛选operation为CREATE的项(原secClassesToCreate)
const secClassesToCreate = this.selectedSecurityClasses.filter(item => item.operation === 'CREATE');

// 筛选未定义operation的项(原selectedSecClasses)
const selectedSecClasses = this.selectedSecurityClasses.filter(item => item.operation === undefined);

2. 替换遍历与匹配逻辑

用更简洁的forEach或for...of循环替代原有的普通for循环,同时用some方法替代嵌套的$filter检查元素是否存在:

// 用forEach遍历
this.businessDataRule.businessRuleSecurities.forEach(security => {
  // 检查selectedSecClasses中是否存在匹配id的项
  const hasMatch = selectedSecClasses.some(item => item.id === security.securityClassId);
  if (!hasMatch) {
    security.operation = 'DELETE';
  }
});

// 或用for...of遍历(更适合需要中断循环的场景)
for (const security of this.businessDataRule.businessRuleSecurities) {
  const hasMatch = selectedSecClasses.some(item => item.id === security.securityClassId);
  if (!hasMatch) {
    security.operation = 'DELETE';
  }
}

3. 可选:添加TypeScript类型定义

为了提升代码可读性和类型安全性,建议为相关对象定义接口:

// 安全类数据接口
interface SecurityClass {
  id: number;
  operation?: 'CREATE' | 'DELETE';
  // 根据实际需求添加其他属性
}

// 业务规则安全项接口
interface BusinessRuleSecurity {
  securityClassId: number;
  operation?: 'DELETE';
  // 根据实际需求添加其他属性
}

// 业务数据规则接口
interface BusinessDataRule {
  businessRuleSecurities: BusinessRuleSecurity[];
  // 根据实际需求添加其他属性
}

// 在组件中声明变量类型
selectedSecurityClasses: SecurityClass[] = [];
businessDataRule: BusinessDataRule;

内容的提问来源于stack exchange,提问作者Andrej12345

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:15:42