{{ entry.title }}
{{ entry.summary }}
{{ paragraph }}
} @if (entry.example) {{{ entry.example }}
}
@if (entry.links?.length) {
import { DOCUMENT } from '@angular/common'; import { afterNextRender, Component, DestroyRef, inject, signal, } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { ActivatedRoute, Router, RouterLink } from '@angular/router'; import { fromEvent } from 'rxjs'; import { throttleTime } from 'rxjs/operators'; import { AfricaniesIconComponent } from '@africanies/africanies-icons'; import { categoryFragmentId, categoryHeading, categoryMeta, GLOSSARY_CATEGORIES, GLOSSARY_ENTRIES, type GlossaryCategory, glossaryEntriesForCategory, type GlossaryEntry, } from '../lecture/glossary'; import { PageHeaderComponent } from '../shared/page-header.component'; /** * Angular & SDK concept guide — definitions for terms linked from code snippets. */ @Component({ selector: 'app-lecture-page', standalone: true, imports: [RouterLink, PageHeaderComponent, AfricaniesIconComponent], template: `
Section labels use short names where docs usually do. Expanded forms are shown in parentheses.
{{ GLOSSARY_ENTRIES.length }} entries · click a term in any implementation snippet to jump to its definition.
{{ category }}
{{ categoryMeta(category).description }}
{{ entry.summary }}
{{ paragraph }}
} @if (entry.example) {{{ entry.example }}
}
@if (entry.links?.length) {