🎯 Modern Angular Application Lifecycle

Flowcharts for reference. Checked against Angular 22.

1. Standalone Application Bootstrap

graph TD A[main.ts] --> B[bootstrapApplication] B --> C[Root Standalone Component] B --> D[Application Config] D --> E[Providers Array] E --> F[provideRouter] E --> G[provideHttpClient] D --> I[Zoneless by Default Since v21] F --> J[Application Ready] G --> J I --> J C --> J

2. Component Lifecycle with Signals

graph TD A[Constructor] --> B[Dependency Injection] B --> C[Signal Initialization] C --> D[Input Signals] D --> E[Output Signals] E --> F[Computed Signals] F --> G[Effects Setup] G --> H[ngOnInit] H --> I[afterNextRender] I --> J[afterEveryRender] J --> K[Component Running] K --> L{Signal Changes?} L -->|Yes| M[Auto Change Detection] L -->|No| N{User Events?} M --> O[Re-render] O --> K N -->|Click/Input| P[Update Signals] N -->|Destroy| Q[ngOnDestroy] P --> M Q --> R[Cleanup] R --> S[End]

3. Zoneless Change Detection

graph TD A[Application Start] --> B[Zoneless Mode Active] B --> C[Signal-based Updates] C --> D[Signal Value Changes] D --> E[Mark Specific Component] E --> F[Local Change Detection] B --> G[Event-based Updates] G --> H[DOM Events] H --> I[Handler Runs and Marks View Dirty] I --> J[Update State] J --> K{Using Signals?} K -->|Yes| D K -->|No| L[Manual markForCheck] L --> M[Schedule CD] F --> N[Update DOM] M --> N N --> O[Wait for Next Change] O --> D

4. Lazy Loading Standalone Components

graph TD A[Route Navigation] --> B{Route Type?} B -->|Eager| C[Direct Component Load] B -->|Lazy| D[loadComponent Function] D --> E[Dynamic Import] E --> F{Already Loaded?} F -->|No| G[Download Bundle] F -->|Yes| H[Use Cached] G --> I[Parse Component] I --> J[Register Component] J --> K[Create Instance] H --> K C --> K K --> L[Inject Dependencies] L --> M[Initialize Signals] M --> N[Run Lifecycle] N --> O[Render Component]

5. Dependency Injection in Standalone

graph TD A[Standalone Component] --> B{DI Method?} B -->|Constructor| C[Constructor Injection] B -->|inject Function| D[inject Function] C --> E[Still Supported, Older Style] D --> F[Recommended Approach] F --> G{Injection Context?} G -->|Constructor| H[In Constructor] G -->|Field| I[Field Initializer] G -->|Factory| J[Factory Function] H --> K[Get Service] I --> K J --> K K --> L{Service Scope?} L -->|Root| M[Singleton] L -->|Component| N[Component Scoped] L -->|Route| O[Route Scoped] M --> P[Use Service] N --> P O --> P

6. Signal-based State Management

graph TD A[Global State Service] --> B[Signal Store] B --> C[State Signals] C --> D[signal Function] C --> E[computed Function] B --> F[State Methods] F --> G[update Method] F --> H[set Method] J[Component 1] --> K[inject Store] L[Component 2] --> M[inject Store] N[Component 3] --> O[inject Store] K --> P[Read Signals] M --> P O --> P P --> Q[Auto-track Dependencies] J --> R[Update State] R --> S[Trigger Effects] S --> T[Notify Consumers] T --> U[Update Component 2] T --> V[Update Component 3]

7. Resource API for HTTP

graph TD A[resource Function] --> B[Configuration] B --> C[loader Function] B --> D[params Function] C --> E[Async Request] E --> F{Response Status?} F -->|Success| G[Update value Signal] F -->|Error| H[Update error Signal] F -->|Loading| I[isLoading Signal] G --> J[Component Template] H --> J I --> J J --> K[Template Binding] K --> L[Display Data] D --> M[Reloads When Params Change] M --> E

8. Router Guards in Standalone

graph TD A[Navigation Start] --> B[CanMatchFn] B --> C{Route Matched?} C -->|No| D[Try Next Route] C -->|Yes| E[CanDeactivateFn on Current Route] E --> F{Can Leave?} F -->|No| G[Navigation Cancelled] F -->|Yes| H[CanActivateFn] H --> I{Guard Pass?} I -->|No| G I -->|Yes| J[ResolveFn] J --> K[Load Lazy Component] K --> L[Activate Component] L --> M[Navigation End]

9. Complete Application Flow

graph LR A[main.ts] --> B[bootstrapApplication] B --> C[App Config] B --> D[Root Component] C --> E[Global Providers] D --> F[Router Outlet] F --> G[Routes] G --> H[Components] H --> I[Signals] H --> J[Services] I --> K[State Management] J --> L[Business Logic] K --> M[UI Updates] L --> M M --> N[User Interaction] N --> O[Events] O --> I

10. Migration Path to Standalone

graph TD A[Modular App] --> B[Analyze Dependencies] B --> C[Convert Components] C --> D[Run ng generate @angular/core:standalone] D --> E[Check imports arrays] E --> F[Remove NgModules] F --> G[Update main.ts] G --> H[Update Routes] H --> I[Test Application] I --> J{Issues Found?} J -->|Yes| K[Fix Imports] J -->|No| L[Migration Complete] K --> I L --> M[Benefits Achieved]