angular
Original:🇺🇸 English
Translated
Angular TypeScript framework with dependency injection and RxJS. Use for enterprise SPAs.
5installs
Sourceg1joshi/agent-skills
Added on
NPX Install
npx skill4agent add g1joshi/agent-skills angularTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Angular
Angular is a platform for building mobile and desktop web applications. Angular 19 (2025) has completely reinvented itself with Signals, Standalone Components, and optional Zone.js.
When to Use
- Enterprise Applications: Strict structure, opinionated, and "batteries-included" (Router, Forms, HTTP).
- Large Teams: TypeScript and strict patterns make it easier for large teams to collaborate.
- Long-term Maintenance: Angular's update story is excellent (CLI automates migrations).
Quick Start (Signals)
typescript
import { Component, signal, computed } from "@angular/core";
@Component({
selector: "app-counter",
standalone: true,
template: `
<p>Count: {{ count() }}</p>
<p>Double: {{ double() }}</p>
<button (click)="increment()">Increment</button>
`,
})
export class CounterComponent {
count = signal(0);
double = computed(() => this.count() * 2);
increment() {
this.count.update((c) => c + 1);
}
}Core Concepts
Signals
The new reactivity primitive. Fine-grained reactivity that allows Angular to drop and only update the exact text node that changed.
Zone.jsStandalone Components
No more . Components import their dependencies directly.
NgModuleDeferrable Views (@defer
)
@deferBuilt-in syntax to lazy-load parts of templates.
html
@defer (on viewport) {
<heavy-chart />
} @placeholder {
<p>Loading...</p>
}Best Practices (2025)
Do:
- Use Signals: Prefer over
signal()for component state.BehaviorSubject - Use : Prefer the
inject()function over constructor dependency injection.inject(Service) - Go Zoneless: Enable for better performance.
provideExperimentalZonelessChangeDetection()
Don't:
- Don't use : Unless maintaining legacy code.
NgModule - Don't use : Use new control flow syntax (
CommonModule,@if) instead of@for,*ngIf.*ngFor