--- name: angular-coding description: Angular coding standards with version-aware patterns. Automatically detects Angular version from package.json and applies appropriate patterns. Use when writing Angular components, services, or TypeScript code. --- # Angular Coding Standards Version-aware Angular development patterns. ## Pre-Edit Analysis **Trước khi edit Angular code, read:** → `C:\Users\BLogic\.cursor\skills\project-scanner\SKILL.md` Quality gates cho high-risk edits (change signature, shared service, delete/rename). ## Setup **Step 0: Scan Existing Patterns (Nếu project có code)** Trước khi tạo mới, scan project để follow convention đang dùng: ``` Glob: **/*.service.ts → Xem service pattern Glob: **/*.component.ts → Xem component pattern Glob: **/*.model.ts → Xem model/interface pattern Grep: FormGroup → Xem form pattern ``` **Step 1: Detect Angular Version** Read `package.json` and find `@angular/core` version: ```json "@angular/core": "^17.0.0" // → v17 "@angular/core": "~15.2.0" // → v15 ``` **Step 2: Load Appropriate Patterns** Based on detected version, read the relevant files: | Version | Files to Read | |---------|---------------| | v13-14 | base.md + module-based.md | | v15-16 | base.md + standalone.md + signals.md (preview) | | v17 | base.md + standalone.md + signals.md + control-flow.md | | v18-19+ | base.md + standalone.md + signals.md + control-flow.md + advanced-v18-19.md | ## Quick Reference ### Naming Conventions (All Versions) | Type | Convention | Example | |------|------------|---------| | Signal | Prefix `$` | `$user`, `$state` | | Observable | Suffix `$` | `isLoading$`, `data$` | | Private | Prefix `_` | `_destroyed$`, `_load()` | ### Core Principles | Priority | Principle | Guideline | |----------|-----------|-----------| | 🥇 | **Angular-native first** | 95% dùng Angular built-in (reactive forms, validators, pipes, directives). 5% custom code khi Angular không hỗ trợ | | 🥈 | **Performance** | OnPush, signals, object mapping > array loop, minimal subscriptions | | 🥉 | **Readability** | Simple code, dễ đọc, dễ sửa cho dev khác. OOP + SOLID | ### Decision Flow ``` Có vấn đề cần giải quyết? ↓ Angular có built-in? (FormControl, Pipe, Directive, Validator...) ├─ YES → Dùng Angular (95%) └─ NO → Tạo custom với SOLID pattern (5%) ``` ## File Index - [base.md](base.md) - Common patterns all versions - [module-based.md](module-based.md) - NgModule patterns (v13-14) - [standalone.md](standalone.md) - Standalone components (v15+) - [signals.md](signals.md) - Signals API (v16+) - [control-flow.md](control-flow.md) - @if/@for/@defer (v17+) - [advanced-v18-19.md](advanced-v18-19.md) - Signal inputs, linkedSignal (v18+)