AGENT SKILL
angular-components
Standards for Standalone Components, Signals inputs, and Control Flow. Use when building standalone Angular components or implementing @if/@for control flow. (triggers: **/*.component.ts, **/*.component.html, angular component, standalone, input signal, output, @if, @for)
- License 许可
- MIT
- 最近更新
- 2026-06-24
- Stars
- ★ 67
- Forks
- 24
01 前言 Front Matter
- name
- angular-components
- description
- Standards for Standalone Components, Signals inputs, and Control Flow. Use when building standalone Angular components or implementing @if/@for control flow. (triggers: **/*.component.ts, **/*.component.html, angular component, standalone, input signal, output, @if, @for)
02 资源文件 12
- 许可证LICENSE.txt11.1 KB
- 资产文件theme-showcase.pdf121.4 KB
- 参考文档themes/arctic-frost.md544 B
- 参考文档themes/botanical-garden.md519 B
- 参考文档themes/desert-rose.md496 B
- 参考文档themes/forest-canopy.md506 B
- 参考文档themes/golden-hour.md528 B
- 参考文档themes/midnight-galaxy.md513 B
- 参考文档themes/modern-minimalist.md549 B
- 参考文档themes/ocean-depths.md555 B
- 参考文档themes/sunset-boulevard.md558 B
- 参考文档themes/tech-innovation.md547 B
03 SKILL.md 正文
Angular Components
Priority: P0 (CRITICAL)
Principles
- Standalone:
standalone: true. Import all dependencies directly inimportsarray. Do not declare in NgModule. (Angular 20+: standalone is the default —standalone: trueis not needed.) Useng generate cto scaffold automatically. - Signal Inputs: Use
input()and input.required<T>() instead of@Input(). Use booleanAttribute ornumberAttributetransforms where applicable (e.g.,input(false, { transform: booleanAttribute })). Access value as a function: this.disabled(). - Signal Outputs: Use output<T>() (from v17.3+) instead of
@Output() EventEmitter. Emit with: this.selected.emit(value). For two-way binding use model() which creates a writable signal. - Control Flow: Use @if (condition), @for (item of items; track item.id), @switch, and @empty { } blocks inside @for for empty state instead of
*ngIf,*ngFor. - Host Bindings: Define in the host: { } object on
@Component(e.g.,'[class.active]': 'isActive()','(click)': 'onClick()') — Never use @HostBinding or @HostListener decorators. - View Encapsulation: Default
Emulated. UseNonecarefully.
Signals Integration
- Use computed() for derived state and display values.
- Use
effect()strictly for side effects (logging, manual DOM manipulation), NEVER for state propagation. - Avoid logic in templates — move to
computed()or component methods. Set ChangeDetectionStrategy.OnPush.
Anti-Patterns
- No logic in template: Replace with
computed()signals or component method calls. - No ElementRef mutation: Encapsulate DOM changes in a Directive or use Renderer2.
- No class inheritance: Compose behavior using Directives and Services instead.