Code Explainers
Angular code explainers
typescript
import { Component, Input } from '@angular/core'; interface Order { id: string;
How Angular ICU plurals localize an order summary
i18n
pluralization
standalone-component
Intermediate
8 steps
typescript
import { Injectable, computed, effect, signal } from '@angular/core'; export interface CartLine { id: string;
A signal-based cart store in Angular
signals
reactivity
computed-state
Intermediate
8 steps
typescript
import { Component, signal } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RevenueChartComponent } from './revenue-chart.component'; import { ReportService, RevenueReport } from './report.service';
Deferred chart loading with @defer in Angular
lazy-loading
signals
dependency-injection
Intermediate
8 steps
typescript
import { Injectable, inject } from '@angular/core'; import { PreloadingStrategy, Route } from '@angular/router'; import { Observable, of, Subject } from 'rxjs'; import { filter, switchMap, take } from 'rxjs/operators';
A hover-triggered preloading strategy in Angular
lazy-loading
rxjs
preloading
Advanced
8 steps
typescript
import { Injectable, inject } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { Observable, of } from 'rxjs'; import { switchMap } from 'rxjs/operators';
A reusable confirmation dialog service in Angular
dependency-injection
observables
dialog
Intermediate
6 steps
typescript
import { Directive, ElementRef, HostBinding, HostListener, Input, inject, signal } from '@angular/core'; @Directive({ selector: '[appCopyToClipboard]',
A copy-to-clipboard directive in Angular
directives
host bindings
clipboard api
Intermediate
9 steps
typescript
import { Pipe, PipeTransform, Inject, LOCALE_ID } from '@angular/core'; interface MoneyOptions { currency?: string;
Building a cached money pipe in Angular
pipes
memoization
internationalization
Intermediate
8 steps
typescript
import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core'; interface Shortcut { key: string;
A keyboard shortcut directive in Angular
directives
event-handling
keyboard-shortcuts
Intermediate
9 steps
typescript
import { Component, computed, signal } from '@angular/core'; import { CdkTableModule } from '@angular/cdk/table'; import { CdkScrollableModule } from '@angular/cdk/scrolling';
Paginating a CDK table with Angular signals
signals
computed-state
pagination
Intermediate
9 steps
typescript
import { Component } from '@angular/core'; import { trigger, transition,
Staggered list animations in Angular
animations
stagger
enter-leave
Intermediate
10 steps
typescript
import { Component, input, computed } from '@angular/core'; function toNumber(value: number | string): number { return typeof value === 'number' ? value : parseFloat(value);
Signal inputs and computed in Angular
signals
reactivity
derived-state
Intermediate
5 steps
typescript
import { Component } from '@angular/core'; import { NgForm } from '@angular/forms'; interface SignupModel {
How template-driven forms validate in Angular
forms
two-way-binding
validation
Intermediate
9 steps
typescript
import { Injectable, signal, computed } from '@angular/core'; export type ToastKind = 'success' | 'error' | 'info' | 'warning';
Building a signal-based toast service in Angular
signals
state-management
dependency-injection
Intermediate
8 steps
typescript
import { Component, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'app-card',
Multi-slot content projection in Angular
content-projection
components
templates
Intermediate
7 steps
typescript
import { Component, ChangeDetectionStrategy, inject, signal } from '@angular/core'; import { CommonModule } from '@angular/common'; import { ScrollingModule } from '@angular/cdk/scrolling'; import { toObservable } from '@angular/core/rxjs-interop';
Virtual scrolling a contact list in Angular
virtual-scrolling
signals
change-detection
Intermediate
6 steps
typescript
@Component({ selector: 'app-article-editor', templateUrl: './article-editor.component.html', })
Autosaving a form with RxJS in Angular
reactive-forms
rxjs-operators
debouncing
Advanced
8 steps
typescript
import { Injectable } from '@angular/core'; import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http'; import { BehaviorSubject, Observable, throwError } from 'rxjs'; import { catchError, filter, take, switchMap } from 'rxjs/operators';
Refreshing auth tokens in an Angular interceptor
http-interceptor
token-refresh
rxjs
Advanced
8 steps
typescript
import { Injectable } from '@angular/core'; import { CanDeactivateFn } from '@angular/router'; import { inject } from '@angular/core'; import { MatDialog } from '@angular/material/dialog';
Guarding navigation with CanDeactivate in Angular
route-guards
functional-guards
dependency-injection
Intermediate
7 steps