SuperAPI AI 工具集

angular-20-control-flow

前端与建站

查看项目

更新于 10-15 07:52

技能介绍

用途

该技能面向使用 Angular 20 编写模板的开发者,提供内置控制流语法的系统性指导。Angular 20 引入新的内置控制流语法(@if、@for、@switch、@defer),以替代结构型指令,官方资料称其在性能、类型安全和开发体验方面更优。

主要能力

技能覆盖以下控制流块:

  • @if / @else / @else if:条件渲染,替代 *ngIf;支持通过 as 别名进行类型收窄。
  • @for:列表迭代,替代 *ngFor;要求必须带 track 表达式,支持 @empty 空集合回退。
  • @switch / @case / @default:多分支条件判断,替代 *ngSwitch。
  • @defer:延迟加载与代码分割;配合 @placeholder、@loading、@error 处理各种状态。

使用方式与规则

条件渲染:使用 @if / @else / @else if。资料要求控制流条件必须使用信号调用形式,如 @if (signal()),不得使用未调用的普通属性。

列表迭代:每个 @for 循环必须包含 track 表达式。推荐按唯一 ID 跟踪(track item.id),静态列表可按索引跟踪(track $index),不得按对象引用跟踪。@for 内可用的上下文变量包括 $index、$first、$last、$even、$odd、$count。

多分支:使用 @switch / @case / @default。

延迟加载:@defer 支持多种触发器,包括 on viewport、on interaction、on idle、on immediate、on timer(Xs)、on hover,并支持组合触发器与 prefetch(如 prefetch on idle、prefetch on hover)。使用 @loading (minimum Xms) 防止 UI 闪烁,使用 @placeholder (minimum Xms) 控制最短显示时间。

迁移:资料提供 *ngIf → @if、*ngFor → @for、*ngSwitch → @switch 的对照示例。技能明确要求不得使用 *ngIf、*ngFor、*ngSwitch 等结构型指令。

适用场景

资料列出的适用场景包括:编写带条件渲染的模板、遍历列表或数组、在模板中实现 switch/case 逻辑、懒加载组件或内容块、处理加载状态与错误边界、通过延迟加载优化打包体积,以及从旧结构型指令迁移到现代语法。技能给出了条件延迟加载、嵌套控制流等进阶模式。

限制与注意事项

资料要求 Angular 20+,若 @ 块出现语法错误需确认版本并更新编译器;@for 缺少 track 表达式会报错;@defer 未懒加载需检查打包配置并确认组件位于独立 chunk;@empty 不显示时需确认集合信号返回空数组而非 undefined。资源方推荐将技能放置于 /.github/skills/angular-20-control-flow/SKILL.md,并表示 Copilot 在处理 Angular 20 控制流语法时会加载该技能。关于该技能的安装命令、价格与平台支持范围,资料未提供。