CINXE.COM
Home • Angular
<!DOCTYPE html><!-- We set all theme classes to allow critters to inline the theme styles and prevent flickering --><html lang="en" class="docs-dark-mode docs-light-mode" data-beasties-container><head> <script> // This logic must execute early, so that we set the necessary // CSS classes to the document node and avoid unstyled content // from appearing on the page. const THEME_PREFERENCE_LOCAL_STORAGE_KEY = 'themePreference'; const DARK_MODE_CLASS_NAME = 'docs-dark-mode'; const LIGHT_MODE_CLASS_NAME = 'docs-light-mode'; const PREFERS_COLOR_SCHEME_DARK = '(prefers-color-scheme: dark)'; const theme = localStorage.getItem(THEME_PREFERENCE_LOCAL_STORAGE_KEY) ?? 'auto'; const prefersDark = window.matchMedia && window.matchMedia(PREFERS_COLOR_SCHEME_DARK).matches; const documentClassList = this.document.documentElement.classList; // clearing classes before setting them. this.document.documentElement.className = ''; if (theme === 'dark' || (theme === 'auto' && prefersDark)) { documentClassList.add(DARK_MODE_CLASS_NAME); } else { documentClassList.add(LIGHT_MODE_CLASS_NAME); } if(location.search.includes('uwu')) { documentClassList.add('uwu'); } </script> <style> .uwu-logo { display: none; } html.uwu .angular-logo { display: none; } html.uwu .uwu-logo { display: block !important; } </style> <meta charset="utf-8"> <title>Home • Angular</title> <base href="/"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Primary Meta Tags --> <meta name="title" content="Angular"> <meta name="description" content="The web development framework for building modern apps."> <!-- Favicons --> <link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="48x48" href="/assets/icons/favicon-48x48.png"> <link rel="icon" type="image/png" sizes="32x32" href="/assets/icons/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/assets/icons/favicon-16x16.png"> <link rel="manifest" href="/assets/icons/site.webmanifest"> <link rel="mask-icon" href="/assets/icons/safari-pinned-tab.svg" color="#e90464"> <link rel="shortcut icon" href="/assets/icons/favicon.ico"> <link rel="canonical" href="https://angular.dev/"> <meta name="apple-mobile-web-app-title" content="Angular"> <meta name="application-name" content="Angular"> <meta name="msapplication-TileColor" content="#e90464"> <meta name="msapplication-config" content="/assets/icons/browserconfig.xml"> <meta name="theme-color" content="#ffffff"> <!-- Open Graph / Facebook --> <meta property="og:type" content="website"> <meta property="og:url" content="https://angular.dev/"> <meta property="og:title" content="Angular"> <meta property="og:description" content="The web development framework for building modern apps."> <meta property="og:image" content="https://angular.dev/assets/images/ng-image.jpg"> <!-- Twitter --> <meta property="twitter:card" content="summary_large_image"> <meta property="twitter:url" content="https://angular.dev/"> <meta property="twitter:title" content="Angular"> <meta property="twitter:description" content="The web development framework for building modern apps."> <meta property="twitter:image" content="https://angular.dev/assets/images/ng-image.jpg"> <!-- Fonts --> <link href="https://fonts.googleapis.com/css2?family=Inter+Tight:wght@500;600&family=Inter:wght@400;500;600&family=DM+Mono:ital@0;1&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" rel="stylesheet"> <style>.docs-light-mode{background-color:#fff;--bright-blue: oklch(51.01% .274 263.83);--indigo-blue: oklch(51.64% .229 281.65);--electric-violet: oklch(53.18% .28 296.97);--french-violet: oklch(47.66% .246 305.88);--vivid-pink: oklch(69.02% .277 332.77);--hot-pink: oklch(59.91% .239 8.14);--hot-red: oklch(61.42% .238 15.34);--orange-red: oklch(63.32% .24 31.68);--super-green: oklch(79.12% .257 155.13);--subtle-purple: color-mix(in srgb, var(--bright-blue) 5%, white 10%);--light-blue: color-mix(in srgb, var(--bright-blue), white 50%);--light-violet: color-mix(in srgb, var(--electric-violet), white 65%);--light-orange: color-mix(in srgb, var(--orange-red), white 50%);--light-pink: color-mix(in srgb, var(--vivid-pink) 10%, white 80%);--symbolic-purple: oklch(42.86% .29 266.4);--symbolic-gray: oklch(66.98% 0 0);--symbolic-blue: oklch(42.45% .223 263.38);--symbolic-pink: oklch(63.67% .254 13.47);--symbolic-orange: oklch(64.73% .23769984683784018 33.18328352127882);--symbolic-yellow: oklch(78.09% .163 65.69);--symbolic-green: oklch(67.83% .229 142.73);--symbolic-cyan: oklch(67.05% .1205924489987394 181.34025902203868);--symbolic-magenta: oklch(51.74% .25453048882711515 315.26261625862725);--symbolic-teal: oklch(57.59% .083 230.58);--symbolic-brown: oklch(49.06% .128 46.41);--symbolic-lime: oklch(70.33% .2078857836035299 135.66843631046476);--gray-1000: oklch(16.93% .004 285.95);--gray-900: oklch(19.37% .006 300.98);--gray-800: oklch(25.16% .008 308.11);--gray-700: oklch(36.98% .014 302.71);--gray-600: oklch(44% .019 306.08);--gray-500: oklch(54.84% .023 304.99);--gray-400: oklch(70.9% .015 304.04);--gray-300: oklch(84.01% .009 308.34);--gray-200: oklch(91.75% .004 301.42);--gray-100: oklch(97.12% .002 325.59);--gray-50: oklch(98.81% 0 0);--red-to-pink-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 11.42%, var(--hot-red) 34.83%, var(--vivid-pink) 60.69% );--red-to-pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--orange-red) 0%, var(--vivid-pink) 50%, var(--electric-violet) 100% );--pink-to-highlight-to-purple-to-blue-horizontal-gradient: linear-gradient( 140deg, var(--vivid-pink) 0%, var(--vivid-pink) 15%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 50%) 25%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 10%) 35%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 42%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 44%, color-mix(in srgb, var(--vivid-pink), var(--page-background) 70%) 47%, var(--electric-violet) 48%, var(--bright-blue) 60% );--purple-to-blue-horizontal-gradient: linear-gradient( 90deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--purple-to-blue-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--red-to-orange-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 0%, var(--orange-red) 100% );--red-to-orange-vertical-gradient: linear-gradient( 0deg, var(--hot-pink) 0%, var(--orange-red) 100% );--pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--vivid-pink) 0%, var(--electric-violet) 100% );--pink-to-purple-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--vivid-pink) 100% );--purple-to-light-purple-vertical-gradient: linear-gradient( 0deg, var(--french-violet) 0%, var(--light-violet) 100% );--green-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--symbolic-cyan) 0%, var(--super-green) 100% );--blue-to-teal-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--light-blue) 100% );--blue-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--symbolic-cyan) 100% );--black-to-gray-vertical-gradient: linear-gradient( 0deg, var(--primary-contrast) 0%, var(--gray-400) 100% );--red-to-pink-vertical-gradient: linear-gradient(0deg, var(--hot-red) 0%, var(--vivid-pink) 100%);--orange-to-pink-vertical-gradient: linear-gradient( 0deg, var(--vivid-pink) 0%, var(--light-orange) 100% );--page-bg-radial-gradient: radial-gradient(circle, white 0%, white 100%);--soft-pink-radial-gradient: radial-gradient( circle at center bottom, var(--light-pink) 0%, white 80% );--full-contrast: black;--primary-contrast: var(--gray-900);--secondary-contrast: var(--gray-800);--tertiary-contrast: var(--gray-700);--quaternary-contrast: var(--gray-500);--quinary-contrast: var(--gray-300);--senary-contrast: var(--gray-200);--septenary-contrast: var(--gray-100);--octonary-contrast: var(--gray-50);--page-background: white;--gray-unfilled: var(--gray-400);--webgl-page-background: #ffffff;--webgl-gray-unfilled: #a39fa9;--mdc-snackbar-container-shape: .25rem;--mdc-snackbar-container-color: var(--page-background);--mdc-snackbar-supporting-text-color: var(--primary-contrast)}.docs-dark-mode{background-color:#0f0f11;--bright-blue: oklch(51.01% .274 263.83);--indigo-blue: oklch(51.64% .229 281.65);--electric-violet: oklch(53.18% .28 296.97);--french-violet: oklch(47.66% .246 305.88);--vivid-pink: oklch(69.02% .277 332.77);--hot-pink: oklch(59.91% .239 8.14);--hot-red: oklch(61.42% .238 15.34);--orange-red: oklch(63.32% .24 31.68);--super-green: oklch(79.12% .257 155.13);--subtle-purple: color-mix(in srgb, var(--bright-blue) 5%, white 10%);--light-blue: color-mix(in srgb, var(--bright-blue), white 50%);--light-violet: color-mix(in srgb, var(--electric-violet), white 65%);--light-orange: color-mix(in srgb, var(--orange-red), white 50%);--light-pink: color-mix(in srgb, var(--vivid-pink) 10%, white 80%);--symbolic-purple: oklch(42.86% .29 266.4);--symbolic-gray: oklch(66.98% 0 0);--symbolic-blue: oklch(42.45% .223 263.38);--symbolic-pink: oklch(63.67% .254 13.47);--symbolic-orange: oklch(64.73% .23769984683784018 33.18328352127882);--symbolic-yellow: oklch(78.09% .163 65.69);--symbolic-green: oklch(67.83% .229 142.73);--symbolic-cyan: oklch(67.05% .1205924489987394 181.34025902203868);--symbolic-magenta: oklch(51.74% .25453048882711515 315.26261625862725);--symbolic-teal: oklch(57.59% .083 230.58);--symbolic-brown: oklch(49.06% .128 46.41);--symbolic-lime: oklch(70.33% .2078857836035299 135.66843631046476);--gray-1000: oklch(16.93% .004 285.95);--gray-900: oklch(19.37% .006 300.98);--gray-800: oklch(25.16% .008 308.11);--gray-700: oklch(36.98% .014 302.71);--gray-600: oklch(44% .019 306.08);--gray-500: oklch(54.84% .023 304.99);--gray-400: oklch(70.9% .015 304.04);--gray-300: oklch(84.01% .009 308.34);--gray-200: oklch(91.75% .004 301.42);--gray-100: oklch(97.12% .002 325.59);--gray-50: oklch(98.81% 0 0);--red-to-pink-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 11.42%, var(--hot-red) 34.83%, var(--vivid-pink) 60.69% );--red-to-pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--orange-red) 0%, var(--vivid-pink) 50%, var(--electric-violet) 100% );--pink-to-highlight-to-purple-to-blue-horizontal-gradient: linear-gradient( 140deg, var(--vivid-pink) 0%, var(--vivid-pink) 15%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 50%) 25%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 10%) 35%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 42%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 44%, color-mix(in srgb, var(--vivid-pink), var(--page-background) 70%) 47%, var(--electric-violet) 48%, var(--bright-blue) 60% );--purple-to-blue-horizontal-gradient: linear-gradient( 90deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--purple-to-blue-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--red-to-orange-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 0%, var(--orange-red) 100% );--red-to-orange-vertical-gradient: linear-gradient( 0deg, var(--hot-pink) 0%, var(--orange-red) 100% );--pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--vivid-pink) 0%, var(--electric-violet) 100% );--pink-to-purple-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--vivid-pink) 100% );--purple-to-light-purple-vertical-gradient: linear-gradient( 0deg, var(--french-violet) 0%, var(--light-violet) 100% );--green-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--symbolic-cyan) 0%, var(--super-green) 100% );--blue-to-teal-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--light-blue) 100% );--blue-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--symbolic-cyan) 100% );--black-to-gray-vertical-gradient: linear-gradient( 0deg, var(--primary-contrast) 0%, var(--gray-400) 100% );--red-to-pink-vertical-gradient: linear-gradient(0deg, var(--hot-red) 0%, var(--vivid-pink) 100%);--orange-to-pink-vertical-gradient: linear-gradient( 0deg, var(--vivid-pink) 0%, var(--light-orange) 100% );--page-bg-radial-gradient: radial-gradient(circle, white 0%, white 100%);--soft-pink-radial-gradient: radial-gradient( circle at center bottom, var(--light-pink) 0%, white 80% );--full-contrast: black;--primary-contrast: var(--gray-900);--secondary-contrast: var(--gray-800);--tertiary-contrast: var(--gray-700);--quaternary-contrast: var(--gray-500);--quinary-contrast: var(--gray-300);--senary-contrast: var(--gray-200);--septenary-contrast: var(--gray-100);--octonary-contrast: var(--gray-50);--page-background: white;--gray-unfilled: var(--gray-400);--webgl-page-background: #ffffff;--webgl-gray-unfilled: #a39fa9;--full-contrast: white;--primary-contrast: var(--gray-50);--secondary-contrast: var(--gray-300);--tertiary-contrast: var(--gray-300);--quaternary-contrast: var(--gray-400);--quinary-contrast: var(--gray-500);--senary-contrast: var(--gray-700);--septenary-contrast: var(--gray-800);--octonary-contrast: var(--gray-900);--page-background: var(--gray-1000);--bright-blue: color-mix(in srgb, oklch(51.01% .274 263.83), var(--full-contrast) 60%);--indigo-blue: color-mix(in srgb, oklch(51.64% .229 281.65), var(--full-contrast) 70%);--electric-violet: color-mix(in srgb, oklch(53.18% .28 296.97), var(--full-contrast) 70%);--french-violet: color-mix(in srgb, oklch(47.66% .246 305.88), var(--full-contrast) 70%);--vivid-pink: color-mix(in srgb, oklch(69.02% .277 332.77), var(--full-contrast) 70%);--hot-pink: color-mix(in srgb, oklch(59.91% .239 8.14), var(--full-contrast) 70%);--hot-red: color-mix(in srgb, oklch(61.42% .238 15.34), var(--full-contrast) 70%);--orange-red: color-mix(in srgb, oklch(63.32% .24 31.68), var(--full-contrast) 60%);--super-green: color-mix(in srgb, oklch(79.12% .257 155.13), var(--full-contrast) 70%);--light-pink: color-mix(in srgb, var(--vivid-pink) 5%, var(--page-background) 75%);--symbolic-purple: color-mix(in srgb, oklch(42.86% .29 266.4), var(--full-contrast) 65%);--symbolic-gray: color-mix(in srgb, oklch(66.98% 0 0), var(--full-contrast) 65%);--symbolic-blue: color-mix(in srgb, oklch(42.45% .223 263.38), var(--full-contrast) 65%);--symbolic-pink: color-mix(in srgb, oklch(63.67% .254 13.47), var(--full-contrast) 65%);--symbolic-orange: color-mix( in srgb, oklch(64.73% .23769984683784018 33.18328352127882), var(--full-contrast) 65% );--symbolic-yellow: color-mix(in srgb, oklch(78.09% .163 65.69), var(--full-contrast) 65%);--symbolic-green: color-mix(in srgb, oklch(67.83% .229 142.73), var(--full-contrast) 65%);--symbolic-cyan: color-mix( in srgb, oklch(67.05% .1205924489987394 181.34025902203868), var(--full-contrast) 65% );--symbolic-magenta: color-mix( in srgb, oklch(51.74% .25453048882711515 315.26261625862725), var(--full-contrast) 65% );--symbolic-teal: color-mix(in srgb, oklch(57.59% .083 230.58), var(--full-contrast) 65%);--symbolic-brown: color-mix(in srgb, oklch(49.06% .128 46.41), var(--full-contrast) 65%);--symbolic-lime: color-mix( in srgb, oklch(70.33% .2078857836035299 135.66843631046476), var(--full-contrast) 65% );--page-bg-radial-gradient: radial-gradient(circle, black 0%, black 100%);--soft-pink-radial-gradient: radial-gradient( circle at center bottom, var(--light-pink) 0%, color-mix(in srgb, black, transparent 15%) 80% );--gray-unfilled: var(--gray-700);--webgl-page-background: #0f0f11;--webgl-gray-unfilled: #413e46;--mdc-snackbar-container-shape: .25rem;--mdc-snackbar-container-color: var(--page-background);--mdc-snackbar-supporting-text-color: var(--primary-contrast)}:root{--z-index-mini-menu: 200;--z-index-top-level-banner: 150;--z-index-nav: 100;--z-index-cookie-consent: 60;--z-index-content: 50;--z-index-icon: 10}:root{--fallback-font-stack: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--page-width: 80ch;--layout-padding: 3.12rem;--primary-nav-width: 110px;--secondary-nav-width: 16.25rem;--fixed-content-height: calc(100vh - var(--layout-padding) * 2)}@media (max-width: 900px){:root{--layout-padding: 2rem}}@media (max-width: 700px){:root{--layout-padding: 1rem}}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:var(--inter-font);font-size:16px;background-color:var(--page-background);color:var(--primary-contrast);transition:color .3s ease,background-color .3s ease;scroll-behavior:smooth}@media (prefers-reduced-motion){html{scroll-behavior:auto}}body{margin:0;overflow-y:auto;overflow-x:hidden}html,body{height:100vh;min-height:100vh}@supports (height: 100svh){html,body{height:100svh}}button{cursor:pointer}:root{--code-font: "DM Mono", monospace;--inter-font: "Inter", var(--fallback-font-stack);--inter-tight-font: "Inter Tight", var(--fallback-font-stack);--icons: "Material Symbols Outlined";--selection-background: var(--vivid-pink);--selection-color: var(--vivid-pink)}h1,h2{font-family:var(--inter-tight-font);font-weight:500;text-wrap:balance}p{font-size:.875rem;line-height:1.4rem;font-weight:400;letter-spacing:-.00875rem}ul{font-size:.875rem;line-height:1.4rem;font-weight:400;letter-spacing:-.01rem}a{text-decoration:none;font-weight:500;transition:color .3s ease}p>a,div>a:not(.docs-card),li:not(.docs-faceted-list *) a{color:var(--bright-blue)}p>a:hover,div>a:not(.docs-card):hover,li:not(.docs-faceted-list *) a:hover{color:var(--vivid-pink)}p>a:active,div>a:not(.docs-card):active,li:not(.docs-faceted-list *) a:active{color:var(--hot-red)}p>a{margin-block:0;text-decoration:underline}.docs-scroll-hide::-webkit-scrollbar-track{background:#0000}.docs-scroll-hide::-webkit-scrollbar{width:0}.docs-scroll-track-transparent-large::-webkit-scrollbar-track{background:#0000;cursor:pointer}.docs-scroll-track-transparent-large::-webkit-scrollbar{width:8px;height:8px}.docs-scroll-track-transparent-large::-webkit-scrollbar-thumb{background-color:var(--quinary-contrast);border-radius:10px;transition:background-color .3s ease}.docs-scroll-track-transparent-large::-webkit-scrollbar-thumb:hover{background-color:var(--quaternary-contrast)}button{font-family:var(--inter-font);background:transparent;-webkit-appearance:none;border:0;font-weight:600}button::-moz-focus-inner{border:0;padding:0}button:disabled{cursor:not-allowed}@property --angle{syntax: "<angle>"; initial-value: 90deg; inherits: false;}@keyframes spin-gradient{0%{--angle: 90deg}to{--angle: 450deg}}.docs-primary-btn{cursor:pointer;border:none;outline:none;position:relative;border-radius:.25rem;padding:.75rem 1.5rem;width:max-content;color:transparent;--angle: 90deg;background:linear-gradient(var(--angle),var(--orange-red) 0%,var(--vivid-pink) 50%,var(--electric-violet) 100%)}.docs-primary-btn:before{content:attr(text);position:absolute;inset:1px;background:var(--page-bg-radial-gradient);border-radius:.2rem;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease,background .3s ease;color:var(--primary-contrast)}.docs-primary-btn:after{content:attr(text);position:absolute;inset:1px;background:var(--page-background);border-radius:.2rem;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease,background .3s ease;color:var(--primary-contrast)}.docs-primary-btn:hover{animation:spin-gradient 4s linear infinite forwards}.docs-primary-btn:hover:before{background-color:var(--page-background);background:var(--soft-pink-radial-gradient);opacity:.9}.docs-primary-btn:hover:after{opacity:0}.docs-primary-btn:active:before{opacity:.8}.docs-primary-btn:disabled{background:var(--quinary-contrast);color:var(--quinary-contrast)}.docs-primary-btn:disabled:before{background-color:var(--page-background);background:var(--page-bg-radial-gradient);opacity:1}kbd:not(:has(kbd)){position:relative;color:var(---tertiary-contrast);border:1px solid var(--quinary-contrast);box-shadow:0 1px #0003,0 0 0 2px var(--octonary-contrast) inset;text-shadow:0 1px 0 var(--octonary-contrast);border-radius:3px;display:inline-block;font-family:sans-serif;line-height:1.5;margin:0 .1em;padding:1px .4em;min-width:14px;min-height:20px;vertical-align:middle;text-align:center}@media (prefers-reduced-motion: no-preference){*:hover>kbd:not(:has(kbd)){box-shadow:0 .5px #0003,0 0 0 2px var(--octonary-contrast) inset;top:1px}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}html{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-tab-indicator-active-indicator-height: 2px;--mdc-tab-indicator-active-indicator-shape: 0}html{--mat-tab-header-divider-color: transparent;--mat-tab-header-divider-height: 0}html{--mat-legacy-button-toggle-height: 36px;--mat-legacy-button-toggle-shape: 2px;--mat-legacy-button-toggle-focus-state-layer-opacity: 1}html{--mat-standard-button-toggle-shape: 4px;--mat-standard-button-toggle-hover-state-layer-opacity: .04;--mat-standard-button-toggle-focus-state-layer-opacity: .12}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd}html{--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: rgb(224.4, 224.4, 224.4)}html{--mat-standard-button-toggle-height: 48px}html{--mat-legacy-button-toggle-label-text-font: Roboto, sans-serif;--mat-legacy-button-toggle-label-text-line-height: 24px;--mat-legacy-button-toggle-label-text-size: 16px;--mat-legacy-button-toggle-label-text-tracking: .03125em;--mat-legacy-button-toggle-label-text-weight: 400}html{--mat-standard-button-toggle-label-text-font: Roboto, sans-serif;--mat-standard-button-toggle-label-text-line-height: 24px;--mat-standard-button-toggle-label-text-size: 16px;--mat-standard-button-toggle-label-text-tracking: .03125em;--mat-standard-button-toggle-label-text-weight: 400}html{--mdc-plain-tooltip-container-shape: 4px;--mdc-plain-tooltip-supporting-text-line-height: 16px}html{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-plain-tooltip-supporting-text-font: Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size: 12px;--mdc-plain-tooltip-supporting-text-weight: 400;--mdc-plain-tooltip-supporting-text-tracking: .0333333333em}a:not(.docs-anchor)>code:not(pre *){position:relative;padding:0 .3rem;white-space:nowrap;background:var(--purple-to-blue-horizontal-gradient);background-clip:text;-webkit-background-clip:text;color:transparent;max-width:max-content}a:not(.docs-anchor)>code:not(pre *):before{content:"";position:absolute;inset:0;width:100%;height:100%;background:var(--subtle-purple);border-radius:.25rem;transition:background .3s ease;z-index:-1}a:not(.docs-anchor)>code:not(pre *):hover{background:var(--vivid-pink);background-clip:text;-webkit-background-clip:text;color:transparent;max-width:max-content} </style><link rel="stylesheet" href="styles-WCFN7QNQ.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-WCFN7QNQ.css"></noscript><style ng-app-id="ng">[_nghost-ng-c2303807924]{margin-inline:auto;display:flex;flex-direction:row;align-items:flex-start;min-height:100vh}@media (min-width: 701px) and (max-width: 900px){[_nghost-ng-c2303807924] docs-top-level-banner[_ngcontent-ng-c2303807924]{top:4.6875rem}}@media (max-width: 700px){[_nghost-ng-c2303807924] docs-top-level-banner[_ngcontent-ng-c2303807924]{top:3.75rem;transform:translateY(0);transition:transform .3s ease-out .6s}}@media (max-width: 900px){[_nghost-ng-c2303807924] docs-top-level-banner[_ngcontent-ng-c2303807924]{z-index:calc(var(--z-index-nav) - 1)}}@media (min-width: 701px) and (max-width: 900px){[_nghost-ng-c2303807924]:has(adev-secondary-navigation) docs-top-level-banner[_ngcontent-ng-c2303807924]{top:8.125rem}}@media (max-width: 700px){[_nghost-ng-c2303807924]:has(.adev-nav-primary--open) docs-top-level-banner[_ngcontent-ng-c2303807924]{transform:translateY(-3.75rem);transition:transform .3s ease-in}}@media (max-width: 900px){[_nghost-ng-c2303807924]{flex-direction:column}}[_nghost-ng-c2303807924]:has(.docs-nav-secondary--open) .docs-app-main-content[_ngcontent-ng-c2303807924]:after, [_nghost-ng-c2303807924]:has(.adev-nav-primary--open) .docs-app-main-content[_ngcontent-ng-c2303807924]:after{visibility:visible;opacity:1}[_nghost-ng-c2303807924]:has(.adev-home) .adev-nav[_ngcontent-ng-c2303807924]{width:0;height:0}@media (min-width: 901px){[_nghost-ng-c2303807924]:has(.adev-home) footer[_ngcontent-ng-c2303807924]{margin-left:var(--primary-nav-width)}}.adev-skip[_ngcontent-ng-c2303807924]{position:absolute;top:.5rem;left:.5rem;z-index:1000;background:var(--primary-contrast);color:var(--page-background);border:1px solid var(--vivid-pink);border-radius:.25rem;padding:.5rem;font-size:.875rem;transform:translateY(-150%);transition:transform .3s ease-out}.adev-skip[_ngcontent-ng-c2303807924]:focus{transform:translateY(0)}.docs-app-main-content[_ngcontent-ng-c2303807924]{display:flex;flex-direction:column;min-height:100vh;width:100%;max-width:2560px}.docs-app-main-content[_ngcontent-ng-c2303807924] [_ngcontent-ng-c2303807924]:after{content:"";position:fixed;top:0;left:0;width:100vw;height:100vh;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:color-mix(in srgb,var(--gray-1000) 5%,transparent);z-index:50;visibility:hidden;opacity:0;transition:opacity .3s ease}@media (min-width: 701px) and (max-width: 900px){.docs-app-main-content[_ngcontent-ng-c2303807924]{width:100%}}footer[_ngcontent-ng-c2303807924]{margin-top:auto}</style><style ng-app-id="ng">[_nghost-ng-c139922363]{display:flex;position:sticky;top:0;z-index:var(--z-index-nav)}[_nghost-ng-c139922363] .adev-mobile-nav-button[_ngcontent-ng-c139922363]{display:flex;align-items:center;gap:.75rem}@media (min-width: 701px) and (max-width: 900px){[_nghost-ng-c139922363]:has(.adev-nav-primary--open){z-index:50}}@media (max-width: 900px){[_nghost-ng-c139922363]{width:100%}[_nghost-ng-c139922363] .wrapper[_ngcontent-ng-c139922363]{width:100%}}.adev-mobile-nav-bar[_ngcontent-ng-c139922363]{display:none;gap:.75rem;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background-color:color-mix(in srgb,var(--page-background) 70%,transparent);position:relative;width:100%;padding-block:.75rem;padding-inline:var(--layout-padding);border-block-end:1px solid var(--septenary-contrast);box-sizing:border-box;transform:translateY(0);transition:transform .3s ease-out .6s}@media (max-width: 700px){.adev-mobile-nav-bar[_ngcontent-ng-c139922363]{display:flex}}.adev-mobile-nav-bar[_ngcontent-ng-c139922363]:has(+.adev-nav-primary--open){transform:translateY(-100%);transition:transform .3s ease-in}.adev-mobile-nav-bar[_ngcontent-ng-c139922363] docs-icon[_ngcontent-ng-c139922363]{color:var(--primary-contrast)}.adev-nav-primary[_ngcontent-ng-c139922363]{display:flex;flex-direction:column;justify-content:space-between;max-height:100vh;overflow:auto;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background-color:color-mix(in srgb,var(--page-background) 70%,transparent);z-index:250;position:relative;transition:background-color .3s ease,border-color .3s ease;height:100dvh;padding-block-start:1rem;padding-block-end:2rem;box-sizing:border-box;border-block-end:1px solid var(--septenary-contrast)}@media (min-width: 901px){.adev-nav-primary[_ngcontent-ng-c139922363]{border-inline-end:1px solid var(--septenary-contrast)}}@media (max-width: 700px){.adev-nav-primary[_ngcontent-ng-c139922363]{border-inline-end:1px solid var(--septenary-contrast)}}@media (min-width: 701px) and (max-width: 900px){.adev-nav-primary[_ngcontent-ng-c139922363]{flex-direction:row;width:100%;padding-inline:calc(var(--layout-padding) - 1.25rem);height:auto;padding-block:0}}.adev-nav-primary.adev-nav-primary--next[_ngcontent-ng-c139922363], .adev-nav-primary.adev-nav-primary--rc[_ngcontent-ng-c139922363]{background:linear-gradient(140deg,color-mix(in srgb,var(--orange-red),transparent 60%),color-mix(in srgb,var(--vivid-pink),transparent 40%) 15%,color-mix(in srgb,var(--electric-violet),transparent 70%) 25%,color-mix(in srgb,var(--bright-blue),transparent 60%) 90%)}.adev-nav-primary.adev-nav-primary--deprecated[_ngcontent-ng-c139922363]{background-color:color-mix(in srgb,var(--symbolic-gray),transparent 30%)}.adev-nav-primary[_ngcontent-ng-c139922363] > div[_ngcontent-ng-c139922363]{display:flex;flex-direction:column;align-items:center;justify-content:center}@media (max-width: 700px){.adev-nav-primary[_ngcontent-ng-c139922363]{position:absolute;top:0;background-color:var(--page-background);box-shadow:10px 4px 3px #0000;transform:translate(-100%);transition:transform .3s ease-in .38s}.adev-nav-primary.adev-nav-primary--open[_ngcontent-ng-c139922363]{transform:translate(0);transition:transform .3s ease-out .1s}}@media (max-width: 700px) and (prefers-reduced-motion: reduce-motion){.adev-nav-primary[_ngcontent-ng-c139922363]{transition:none}}.adev-nav__top[_ngcontent-ng-c139922363]{padding:0;margin:0;list-style:none;display:flex;flex-direction:column}@media (min-width: 701px) and (max-width: 900px){.adev-nav__top[_ngcontent-ng-c139922363]{flex-direction:row}}.adev-nav__top[_ngcontent-ng-c139922363] .adev-version-button[_ngcontent-ng-c139922363]{border:1px solid var(--senary-contrast);border-radius:.25rem;width:fit-content;margin:0 auto;display:flex;justify-content:space-between;gap:.25rem;color:var(--quaternary-contrast);fill:var(--quaternary-contrast);transition:color .3s ease;font-size:.8rem;font-weight:500}.adev-nav__top[_ngcontent-ng-c139922363] .adev-version-button[_ngcontent-ng-c139922363]:hover{color:var(--primary-contrast)}.adev-nav__top[_ngcontent-ng-c139922363] .adev-version-button[_ngcontent-ng-c139922363] docs-icon[_ngcontent-ng-c139922363]{font-size:inherit;line-height:inherit;transition:transform .2s ease}@media (max-width: 700px){.adev-nav__top[_ngcontent-ng-c139922363] .adev-version-button.adev-mini-menu-open[_ngcontent-ng-c139922363]:after{transform:rotate(-90deg)}}@media (min-width: 901px){.adev-nav__top[_ngcontent-ng-c139922363] .adev-version-button.adev-mini-menu-open[_ngcontent-ng-c139922363]:after{transform:rotate(-90deg)}}@media (min-width: 701px) and (max-width: 900px){.adev-nav__top[_ngcontent-ng-c139922363] > li[_ngcontent-ng-c139922363]:first-of-type{padding-inline-start:1.25rem}.adev-nav__top[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363]{padding-inline:.875rem}}.adev-nav__bottom[_ngcontent-ng-c139922363]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1rem}@media (min-width: 701px) and (max-width: 900px){.adev-nav__bottom[_ngcontent-ng-c139922363]{flex-direction:row!important;margin-inline-end:1.25rem;gap:.75rem}}.adev-nav__bottom[_ngcontent-ng-c139922363] .adev-nav-item--active[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363] docs-icon[_ngcontent-ng-c139922363]{color:var(--primary-contrast)}.adev-nav__bottom[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363]{border:none;background-color:transparent;cursor:pointer;width:100%;padding-inline:1rem}@media (min-width: 701px) and (max-width: 900px){.adev-nav__bottom[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363]{padding-inline:.5rem}}.adev-nav__bottom[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363] docs-icon[_ngcontent-ng-c139922363]{color:var(--quaternary-contrast);font-size:1.5rem}@media (max-width: 900px){.adev-nav__bottom[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363] docs-icon[_ngcontent-ng-c139922363]{font-size:1.25rem}}.adev-nav__bottom[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363]:hover docs-icon[_ngcontent-ng-c139922363]{color:var(--primary-contrast)}.adev-nav-item--logo[_ngcontent-ng-c139922363] a[_ngcontent-ng-c139922363]{height:34px}@media (min-width: 701px) and (max-width: 900px){.adev-nav-item--logo[_ngcontent-ng-c139922363]{gap:.75rem}}.adev-close-nav[_ngcontent-ng-c139922363]{display:none;color:var(--primary-contrast)}@media (max-width: 700px){.adev-close-nav[_ngcontent-ng-c139922363]{display:block}}.adev-search-desktop[_ngcontent-ng-c139922363]{height:1.375rem;text-transform:capitalize}@media (max-width: 900px){.adev-search-desktop[_ngcontent-ng-c139922363]{display:none}}.adev-sub-navigation-hidden[_ngcontent-ng-c139922363]{display:none}.adev-secondary-tablet-bar[_ngcontent-ng-c139922363]{font-size:.875rem;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background-color:color-mix(in srgb,var(--page-background) 70%,transparent);border-block-end:1px solid var(--septenary-contrast);padding-block:1rem;padding-inline:var(--layout-padding);transition:background-color .3s ease,border-color .3s ease}.adev-secondary-tablet-bar[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363]{display:flex;gap:.5rem;align-items:center;color:var(--primary-contrast);padding:0;font-weight:500}@media (min-width: 901px){.adev-secondary-tablet-bar[_ngcontent-ng-c139922363]{display:none}}@media (max-width: 700px){.adev-secondary-tablet-bar[_ngcontent-ng-c139922363]{display:none}}</style><style ng-app-id="ng">.adev-mini-menu[_ngcontent-ng-c139922363]{padding:0;color:var(--primary-contrast);background-color:var(--page-background);border:1px solid var(--senary-contrast);border-radius:.25rem;z-index:var(--z-index-mini-menu);box-shadow:10px 4px 40px #00000013}@media (min-width: 701px) and (max-width: 900px){.adev-mini-menu[_ngcontent-ng-c139922363]{top:75px;left:5px}}.adev-mini-menu[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363]{list-style:none}.adev-mini-menu[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363]{padding:1rem;min-width:75px;min-height:75px;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.adev-mini-menu[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363] docs-icon[_ngcontent-ng-c139922363]{font-size:1.5rem;color:var(--quaternary-contrast);transition:color .3s ease}.adev-mini-menu[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363]:hover{background-color:var(--senary-contrast)}.adev-mini-menu[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363]:hover span[_ngcontent-ng-c139922363], .adev-mini-menu[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363] button[_ngcontent-ng-c139922363]:hover docs-icon[_ngcontent-ng-c139922363]{color:var(--primary-contrast)}.adev-mini-menu[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363] a[_ngcontent-ng-c139922363]{display:flex;justify-content:center;align-items:center;padding:1rem;min-width:50px}.adev-mini-menu[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363] a[_ngcontent-ng-c139922363] svg[_ngcontent-ng-c139922363]{fill:var(--quaternary-contrast);transition:fill .3s ease}.adev-mini-menu[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363] a[_ngcontent-ng-c139922363]:hover{background-color:var(--senary-contrast)}.adev-mini-menu[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363] a[_ngcontent-ng-c139922363]:hover svg[_ngcontent-ng-c139922363]{fill:var(--primary-contrast)}.adev-mini-menu[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363] span[_ngcontent-ng-c139922363]{color:var(--quaternary-contrast);transition:color .3s ease}.adev-mini-menu-open[_ngcontent-ng-c139922363]{display:block}.adev-version-picker[_ngcontent-ng-c139922363]{overflow-y:auto;max-height:90vh;top:30px;left:10px;position:absolute;bottom:auto}.adev-version-picker[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363]{padding-inline:0}.adev-version-picker[_ngcontent-ng-c139922363] li[_ngcontent-ng-c139922363] a[_ngcontent-ng-c139922363]{line-height:1em}@media (min-width: 701px) and (max-width: 900px){.adev-version-picker[_ngcontent-ng-c139922363]{top:30px;left:auto;bottom:auto}}</style><style ng-app-id="ng">.adev-nav-item[_ngcontent-ng-c139922363]{color:var(--quaternary-contrast);position:relative;width:6.875rem}@media (max-width: 700px){.adev-nav-item[_ngcontent-ng-c139922363]{width:5.05rem}}@media (min-width: 701px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c139922363]{display:flex;align-items:center;justify-content:center;width:auto}}.adev-nav-item[_ngcontent-ng-c139922363]:before{content:"";position:absolute;bottom:0;top:0;left:0;width:2px;background-color:var(--primary-contrast);opacity:0;transform:scale(.9);transform-origin:center;transition:opacity .3s ease,transform .3s ease}@media (min-width: 701px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c139922363]:before{width:auto;top:auto;right:0;height:2px}}@media (min-width: 701px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c139922363]:not(.adev-nav-item--logo) a[_ngcontent-ng-c139922363], .adev-nav-item[_ngcontent-ng-c139922363]:not(.adev-nav-item--logo) .adev-nav-button[_ngcontent-ng-c139922363]{gap:.25rem}}.adev-nav-item[_ngcontent-ng-c139922363] .adev-nav-button[_ngcontent-ng-c139922363]{width:100%;font-weight:500}.adev-nav-item[_ngcontent-ng-c139922363] a[_ngcontent-ng-c139922363], .adev-nav-item[_ngcontent-ng-c139922363] .adev-nav-button[_ngcontent-ng-c139922363]{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding-block:1.25rem;text-decoration:none;fill:var(--quaternary-contrast);color:inherit;cursor:pointer;transition:fill .3s ease}@media (min-width: 701px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c139922363] a[_ngcontent-ng-c139922363], .adev-nav-item[_ngcontent-ng-c139922363] .adev-nav-button[_ngcontent-ng-c139922363]{flex-direction:row}}.adev-nav-item__label[_ngcontent-ng-c139922363]{margin:0;font-size:.813;color:inherit}.adev-nav-item__label[_ngcontent-ng-c139922363] abbr[_ngcontent-ng-c139922363]{font-size:.688}.adev-nav-item[_ngcontent-ng-c139922363] i[_ngcontent-ng-c139922363]{color:var(--quaternary-contrast);transition:color .3s ease}.adev-nav-item[_ngcontent-ng-c139922363] span[_ngcontent-ng-c139922363], .adev-nav-item[_ngcontent-ng-c139922363] abbr[_ngcontent-ng-c139922363]{transition:color .3s ease}.adev-nav-item[_ngcontent-ng-c139922363]:hover a[_ngcontent-ng-c139922363], .adev-nav-item[_ngcontent-ng-c139922363]:hover .adev-nav-button[_ngcontent-ng-c139922363]{fill:var(--primary-contrast)}.adev-nav-item[_ngcontent-ng-c139922363]:hover span[_ngcontent-ng-c139922363], .adev-nav-item[_ngcontent-ng-c139922363]:hover abbr[_ngcontent-ng-c139922363], .adev-nav-item[_ngcontent-ng-c139922363]:hover i[_ngcontent-ng-c139922363]{color:var(--primary-contrast)}.adev-nav-item--active[_ngcontent-ng-c139922363]:before{opacity:1;transform:scaleY(1)}.adev-nav-item--active[_ngcontent-ng-c139922363]:not(.adev-nav-item--logo) path[_ngcontent-ng-c139922363]{fill:var(--primary-contrast)}.adev-nav-item--active[_ngcontent-ng-c139922363] span[_ngcontent-ng-c139922363], .adev-nav-item--active[_ngcontent-ng-c139922363] abbr[_ngcontent-ng-c139922363], .adev-nav-item--active[_ngcontent-ng-c139922363] i[_ngcontent-ng-c139922363]{color:var(--primary-contrast)}</style><style ng-app-id="ng">.docs-icon_high-contrast[_ngcontent-ng-c1001676203]{color:var(--primary-contrast)}/*# sourceMappingURL=icon.component.css.map */</style><style ng-app-id="ng">.adev-footer-columns[_ngcontent-ng-c2442385480]{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem}@container footer (max-width: 600px){.adev-footer-columns[_ngcontent-ng-c2442385480]{grid-template-columns:repeat(2,1fr)!important}}.adev-footer-container[_ngcontent-ng-c2442385480]{container:footer/inline-size;position:relative;justify-content:center;padding:var(--layout-padding);padding-inline-end:1rem;background-color:var(--page-background);transition:background-color .3s ease}@media only screen and (min-width: 1430px){.adev-footer-container[_ngcontent-ng-c2442385480]{width:calc(100% - 195px - var(--layout-padding) * 3)}}.adev-footer-container[_ngcontent-ng-c2442385480] h2[_ngcontent-ng-c2442385480]{font-size:.875rem;font-weight:600;margin-block-end:1.75rem;letter-spacing:-.00875rem}.adev-footer-container[_ngcontent-ng-c2442385480] ul[_ngcontent-ng-c2442385480]{list-style:none;padding:0;display:flex;flex-direction:column;gap:.95rem}.adev-footer-container[_ngcontent-ng-c2442385480] ul[_ngcontent-ng-c2442385480] li[_ngcontent-ng-c2442385480]{font-size:.8125rem}.adev-footer-container[_ngcontent-ng-c2442385480] a[_ngcontent-ng-c2442385480]{color:var(--quaternary-contrast);font-weight:300;transition:color .3s ease}.adev-footer-container[_ngcontent-ng-c2442385480] a[_ngcontent-ng-c2442385480]:hover{color:var(--primary-contrast)}.adev-footer-container[_ngcontent-ng-c2442385480] p.docs-license[_ngcontent-ng-c2442385480]{transition:color .3s ease;color:var(--quaternary-contrast);font-weight:300;grid-column:span 4;font-size:.75rem;margin-block-start:2rem}</style><style ng-app-id="ng">[_nghost-ng-c2288387504]{width:100%;position:relative}.docs-dark-mode [_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504] img[_ngcontent-ng-c2288387504]{content:url("./media/editor-dark-horizontal-GYEXDISV.svg")}@media (max-width: 775px){.docs-dark-mode [_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504] img[_ngcontent-ng-c2288387504]{content:url("./media/editor-dark-vertical-AL4QYX2T.svg")}}.docs-light-mode [_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504] img[_ngcontent-ng-c2288387504]{content:url("./media/editor-light-horizontal-VWK2ERV3.svg")}@media (max-width: 775px){.docs-light-mode [_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504] img[_ngcontent-ng-c2288387504]{content:url("./media/editor-light-vertical-KSMCJ4S3.svg")}}[_nghost-ng-c2288387504] .spacer[_ngcontent-ng-c2288387504]{height:100vh}[_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504]{position:relative;height:300vh;background-color:var(--page-background)}[_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504] .adev-code-editor[_ngcontent-ng-c2288387504]{background-color:var(--page-background);padding-bottom:60px;position:sticky;top:calc((100vh - (100vh - 110px))/2)}@media (min-width: 701px) and (max-width: 900px){[_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504] .adev-code-editor[_ngcontent-ng-c2288387504]{top:calc((100vh - (100vh - 110px))/2 + 36px)}}@media (max-width: 700px){[_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504] .adev-code-editor[_ngcontent-ng-c2288387504]{top:calc((100vh - (100vh - 110px))/2 + 25px)}}[_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504] .adev-code-editor[_ngcontent-ng-c2288387504] embedded-editor{margin:0 auto;display:flex;width:75vw;height:calc(100vh - 110px)}@media (max-width: 700px){[_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504] .adev-code-editor[_ngcontent-ng-c2288387504] embedded-editor{width:95vw}}[_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504] .adev-code-editor[_ngcontent-ng-c2288387504] embedded-editor .adev-editor-container{width:100%}[_nghost-ng-c2288387504] .adev-editor-scroll-container[_ngcontent-ng-c2288387504] img[_ngcontent-ng-c2288387504]{margin:0 auto;display:flex;justify-content:center;align-items:center;height:auto;min-height:60vh;width:75vw}</style><style ng-app-id="ng">[_nghost-ng-c694462223]{display:block;position:relative}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223]{position:fixed;inset:0}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .layer[_ngcontent-ng-c694462223]{position:absolute;inset:0}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .layer[_ngcontent-ng-c694462223] h2[_ngcontent-ng-c694462223]{font-size:4vw;font-weight:600;white-space:nowrap;margin-top:0;margin-bottom:.5em;z-index:1}@media (max-width: 900px){[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .layer[_ngcontent-ng-c694462223] h2[_ngcontent-ng-c694462223]{font-size:2rem}}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .layer[_ngcontent-ng-c694462223] p[_ngcontent-ng-c694462223]{font-weight:400;color:var(--quaternary-contrast);font-size:clamp(1rem,1vw,2rem);line-height:1.5;width:clamp(375px,50%,600px);margin:0 auto}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .layer[_ngcontent-ng-c694462223] h2[_ngcontent-ng-c694462223], [_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .layer[_ngcontent-ng-c694462223] p[_ngcontent-ng-c694462223]{background-color:var(--page-background);box-shadow:0 0 20px 20px var(--page-background)}@media (max-width: 1200px){[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .layer[_ngcontent-ng-c694462223] h2[_ngcontent-ng-c694462223], [_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .layer[_ngcontent-ng-c694462223] p[_ngcontent-ng-c694462223]{box-shadow:0 0 10px 10px var(--page-background)}}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223]{z-index:10}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223]{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;border:1px solid var(--senary-contrast);background:var(--page-background);position:absolute;border-radius:.25rem;padding:10px;max-width:100%;width:fit-content;box-sizing:border-box;transition:background .3s ease,border .3s ease,transform .2s linear;top:var(--layout-padding);left:calc(var(--layout-padding) + var(--primary-nav-width))}@media (max-width: 900px){[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223]{top:6rem;left:var(--layout-padding)}}@media (max-width: 700px){[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223]{top:5rem}}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223] h1[_ngcontent-ng-c694462223], [_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223] p[_ngcontent-ng-c694462223]{display:inline;font-size:.875rem;margin:0;background-image:var(--red-to-pink-to-purple-horizontal-gradient);background-clip:text;color:transparent;width:fit-content;font-weight:500;box-shadow:none;position:relative}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223] h1.adev-banner-cta[_ngcontent-ng-c694462223], [_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223] p.adev-banner-cta[_ngcontent-ng-c694462223]{color:var(--tertiary-contrast)}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223] h1.adev-banner-cta[_ngcontent-ng-c694462223]:after, [_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223] p.adev-banner-cta[_ngcontent-ng-c694462223]:after{content:"";position:absolute;width:100%;transform:scaleX(0);height:1px;bottom:-2px;left:0;background:var(--red-to-pink-to-purple-horizontal-gradient);transform-origin:bottom right;transition:transform .3s ease}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223]:hover .adev-banner-cta[_ngcontent-ng-c694462223]:after{transform:scaleX(1);transform-origin:bottom left}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .learn-angular[_ngcontent-ng-c694462223]{position:absolute;left:50%;bottom:5%;transform:translate(-50%);transition:opacity .2s linear;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:50px}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .learn-angular[_ngcontent-ng-c694462223] button[_ngcontent-ng-c694462223]{font-size:1rem;padding:1rem 1.75rem}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .learn-angular[_ngcontent-ng-c694462223] button[_ngcontent-ng-c694462223]:after{font-size:1rem}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .learn-angular[_ngcontent-ng-c694462223] .adev-arrow[_ngcontent-ng-c694462223]{transform:rotate(45deg);border:solid var(--primary-contrast);border-width:0 2px 2px 0;display:inline-block;padding:7px}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223]{-webkit-user-select:none;user-select:none;pointer-events:none}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223] .svg[_ngcontent-ng-c694462223]{position:absolute;width:100%;height:100%;fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223] .wrapper[_ngcontent-ng-c694462223]{transform:scale(.55);transform-origin:50% 50%}@media (max-width: 775px){[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223] .wrapper[_ngcontent-ng-c694462223]{transform:scale(.8)}}@media (min-width: 1801px){[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223] .wrapper[_ngcontent-ng-c694462223]{transform:scale(.5)}}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223] .wrapper[_ngcontent-ng-c694462223] .logo[_ngcontent-ng-c694462223]{transition:transform .2s linear}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223] .wrapper[_ngcontent-ng-c694462223] .logo[_ngcontent-ng-c694462223] .shield[_ngcontent-ng-c694462223], [_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223] .wrapper[_ngcontent-ng-c694462223] .logo[_ngcontent-ng-c694462223] .shield[_ngcontent-ng-c694462223] .shield-middle[_ngcontent-ng-c694462223]{transform-origin:177px 200px;transition:transform .2s linear}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223] .wrapper[_ngcontent-ng-c694462223] .logo[_ngcontent-ng-c694462223] .shield[_ngcontent-ng-c694462223] .shield-bottom-a-arc[_ngcontent-ng-c694462223]{transform-origin:0 302px;transition:transform .2s linear}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223] .wrapper[_ngcontent-ng-c694462223] .logo[_ngcontent-ng-c694462223] .shield[_ngcontent-ng-c694462223] .shield-bottom-extension[_ngcontent-ng-c694462223]{transform-origin:177px 340px;transition:transform .2s linear;transform:scale(0)}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223] .wrapper[_ngcontent-ng-c694462223] .logo[_ngcontent-ng-c694462223] .letter[_ngcontent-ng-c694462223]{transition:opacity .2s linear}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .uwu-layer[_ngcontent-ng-c694462223]{display:flex;align-items:center;justify-content:center;transition:transform .2s linear,opacity .2s linear}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .uwu-layer[_ngcontent-ng-c694462223] img[_ngcontent-ng-c694462223]{-webkit-user-select:none;user-select:none;width:max(700 * min(100vw,2560px) / 1470,350px);height:auto}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .works-at-any-scale-layer[_ngcontent-ng-c694462223], [_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .loved-by-millions-layer[_ngcontent-ng-c694462223], [_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .build-for-everyone-layer[_ngcontent-ng-c694462223]{-webkit-user-select:none;user-select:none;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;opacity:0;z-index:1;transition:transform .2s linear,opacity .2s linear}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .works-at-any-scale-layer[_ngcontent-ng-c694462223]{transform:scale(0)}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .loved-by-millions-layer[_ngcontent-ng-c694462223], [_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .build-for-everyone-layer[_ngcontent-ng-c694462223]{transform:scale(.75)}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .build-for-everyone-layer[_ngcontent-ng-c694462223] .title[_ngcontent-ng-c694462223]{color:transparent;display:inline-block;background:linear-gradient(110deg,#f31a5b 0,#8737e9 50%,#3a373f 0%);background-clip:text;background-size:205% 100%;background-position-x:100%;transition:background-position-x .2s linear}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .meteor-field-layer[_ngcontent-ng-c694462223]{overflow:hidden}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .meteor-field-layer[_ngcontent-ng-c694462223] .field[_ngcontent-ng-c694462223]{--math-pi: 3.1415926536rad;position:absolute;flex-wrap:wrap;align-content:flex-start;gap:var(--meteor-gap);display:none;transform:scale(1.42);top:0;left:0;transform-origin:50% 50%;transition:opacity .2s linear,transform .2s linear}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .meteor-field-layer[_ngcontent-ng-c694462223] .field[_ngcontent-ng-c694462223] .meteor[_ngcontent-ng-c694462223]{position:relative;width:var(--meteor-width);height:var(--meteor-height);opacity:0;transform:translate(200%,200%) scale(.3);transition:opacity .2s linear,transform .2s linear}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .meteor-field-layer[_ngcontent-ng-c694462223] .field[_ngcontent-ng-c694462223] .meteor[_ngcontent-ng-c694462223]:after{content:"";position:absolute;width:4px;height:var(--meteor-tail-length);border-radius:2px;transform-origin:top center;transform:rotate(var(--meteor-tilt-angle));top:0;left:0}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .meteor-field-layer[_ngcontent-ng-c694462223] .field[_ngcontent-ng-c694462223] .meteor.type-1[_ngcontent-ng-c694462223]:after{background:linear-gradient(calc(var(--math-pi) + var(--meteor-tilt-angle)),rgb(228,49,85) 0,rgb(219,64,219) 66%,transparent 100%)}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .meteor-field-layer[_ngcontent-ng-c694462223] .field[_ngcontent-ng-c694462223] .meteor.type-2[_ngcontent-ng-c694462223]:after{background:linear-gradient(calc(var(--math-pi) + var(--meteor-tilt-angle)),rgb(152,56,226) 0,rgb(217,18,167) 66%,transparent 100%)}[_nghost-ng-c694462223] .animation[_ngcontent-ng-c694462223] .meteor-field-layer[_ngcontent-ng-c694462223] .field[_ngcontent-ng-c694462223] .meteor.type-3[_ngcontent-ng-c694462223]:after{background:linear-gradient(calc(var(--math-pi) + var(--meteor-tilt-angle)),rgb(214,53,150) 0,rgb(229,91,229) 66%,transparent 100%)}[_nghost-ng-c694462223] .animation.reduced-motion[_ngcontent-ng-c694462223]{position:relative}[_nghost-ng-c694462223] .animation.reduced-motion[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223]{height:100vh}@media (max-width: 700px){[_nghost-ng-c694462223] .animation.reduced-motion[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223]{top:6rem}}@media (min-width: 901px){[_nghost-ng-c694462223] .animation.reduced-motion[_ngcontent-ng-c694462223] .banners-layer[_ngcontent-ng-c694462223] .adev-banner[_ngcontent-ng-c694462223]{left:var(--layout-padding)}}[_nghost-ng-c694462223] .animation.reduced-motion[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223]{position:relative;height:100vh}@media (max-width: 900px){[_nghost-ng-c694462223] .animation.reduced-motion[_ngcontent-ng-c694462223] .logo-layer[_ngcontent-ng-c694462223]{margin-top:-75px}}[_nghost-ng-c694462223] .animation.reduced-motion[_ngcontent-ng-c694462223] .works-at-any-scale-layer[_ngcontent-ng-c694462223], [_nghost-ng-c694462223] .animation.reduced-motion[_ngcontent-ng-c694462223] .loved-by-millions-layer[_ngcontent-ng-c694462223], [_nghost-ng-c694462223] .animation.reduced-motion[_ngcontent-ng-c694462223] .build-for-everyone-layer[_ngcontent-ng-c694462223]{position:relative;height:120vh;opacity:1;transform:scale(1)}[_nghost-ng-c694462223] .animation.reduced-motion[_ngcontent-ng-c694462223] .build-for-everyone-layer[_ngcontent-ng-c694462223] > .title[_ngcontent-ng-c694462223]{background-position-x:0}</style></head> <body class="mat-typography docs-scroll-track-transparent-large"><!--nghm--> <adev-root ng-version="19.2.5" _nghost-ng-c2303807924 ngh="5" ng-server-context="ssg"><button _ngcontent-ng-c2303807924 class="adev-skip">Skip to main content</button><!----><!----><div _ngcontent-ng-c2303807924 class="adev-nav" _nghost-ng-c139922363 ngh="1"><div _ngcontent-ng-c139922363 class="wrapper" id="primaryNav"><div _ngcontent-ng-c139922363 class="adev-mobile-nav-bar"><button _ngcontent-ng-c139922363 type="button" aria-label="Toggle mobile navigation" class="adev-mobile-nav-button"><svg _ngcontent-ng-c139922363="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 223 236" width="32"><g _ngcontent-ng-c139922363="" clip-path="url(#2a)"><path _ngcontent-ng-c139922363="" fill="url(#2b)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"/><path _ngcontent-ng-c139922363="" fill="url(#2c)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"/></g><defs _ngcontent-ng-c139922363=""><linearGradient _ngcontent-ng-c139922363="" id="2b" x1="49.009" x2="225.829" y1="213.75" y2="129.722" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c139922363="" stop-color="#E40035"/><stop _ngcontent-ng-c139922363="" offset=".24" stop-color="#F60A48"/><stop _ngcontent-ng-c139922363="" offset=".352" stop-color="#F20755"/><stop _ngcontent-ng-c139922363="" offset=".494" stop-color="#DC087D"/><stop _ngcontent-ng-c139922363="" offset=".745" stop-color="#9717E7"/><stop _ngcontent-ng-c139922363="" offset="1" stop-color="#6C00F5"/></linearGradient><linearGradient _ngcontent-ng-c139922363="" id="2c" x1="41.025" x2="156.741" y1="28.344" y2="160.344" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c139922363="" stop-color="#FF31D9"/><stop _ngcontent-ng-c139922363="" offset="1" stop-color="#FF5BE1" stop-opacity="0"/></linearGradient><clipPath _ngcontent-ng-c139922363="" id="2a"><path _ngcontent-ng-c139922363="" fill="#fff" d="M0 0h223v236H0z"/></clipPath></defs></svg><docs-icon _ngcontent-ng-c139922363 aria-hidden="true" translate="no" role="presentation" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">menu</docs-icon></button></div><nav _ngcontent-ng-c139922363 class="adev-nav-primary docs-scroll-hide"><button _ngcontent-ng-c139922363 type="button" aria-label="Close navigation" class="adev-close-nav"><docs-icon _ngcontent-ng-c139922363 aria-hidden="true" translate="no" role="presentation" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">close</docs-icon></button><ul _ngcontent-ng-c139922363 class="adev-nav__top"><li _ngcontent-ng-c139922363 class="adev-nav-item adev-nav-item--logo adev-nav-item--active"><a _ngcontent-ng-c139922363 aria-label="Angular homepage" routerlink="/" href="/"><svg _ngcontent-ng-c139922363="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 223 236" width="32" class="angular-logo"><g _ngcontent-ng-c139922363="" clip-path="url(#a)"><path _ngcontent-ng-c139922363="" fill="url(#b)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"/><path _ngcontent-ng-c139922363="" fill="url(#c)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"/></g><defs _ngcontent-ng-c139922363=""><linearGradient _ngcontent-ng-c139922363="" id="b" x1="49.009" x2="225.829" y1="213.75" y2="129.722" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c139922363="" stop-color="#E40035"/><stop _ngcontent-ng-c139922363="" offset=".24" stop-color="#F60A48"/><stop _ngcontent-ng-c139922363="" offset=".352" stop-color="#F20755"/><stop _ngcontent-ng-c139922363="" offset=".494" stop-color="#DC087D"/><stop _ngcontent-ng-c139922363="" offset=".745" stop-color="#9717E7"/><stop _ngcontent-ng-c139922363="" offset="1" stop-color="#6C00F5"/></linearGradient><linearGradient _ngcontent-ng-c139922363="" id="c" x1="41.025" x2="156.741" y1="28.344" y2="160.344" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c139922363="" stop-color="#FF31D9"/><stop _ngcontent-ng-c139922363="" offset="1" stop-color="#FF5BE1" stop-opacity="0"/></linearGradient><clipPath _ngcontent-ng-c139922363="" id="a"><path _ngcontent-ng-c139922363="" fill="#fff" d="M0 0h223v236H0z"/></clipPath></defs></svg><!----><!----></a><div _ngcontent-ng-c139922363 class="adev-nav-item"><button _ngcontent-ng-c139922363 type="button" aria-label="Select Angular version" role="button" class="cdk-menu-trigger adev-version-button" data-cdk-menu-stack-id="cdk-menu-stack-0" aria-haspopup="menu" aria-expanded="false"> v19 <svg _ngcontent-ng-c139922363="" xmlns="http://www.w3.org/2000/svg" height="15" viewBox="0 -960 960 960" width="15" fill="inherit"><path _ngcontent-ng-c139922363="" d="M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z"/></svg></button><!----><!----></div></li><li _ngcontent-ng-c139922363 class="adev-nav-item"><button _ngcontent-ng-c139922363 type="button" title="Search docs" class="adev-nav-button"><svg _ngcontent-ng-c139922363="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="inherit"><path _ngcontent-ng-c139922363="" d="M14.583 15.48 9.104 10a4.591 4.591 0 0 1-1.458.844 5.156 5.156 0 0 1-1.771.302c-1.5 0-2.77-.52-3.813-1.563C1.022 8.542.5 7.285.5 5.813c0-1.473.52-2.73 1.563-3.771C3.103 1 4.367.479 5.854.479 7.326.48 8.58 1 9.614 2.042c1.035 1.041 1.553 2.298 1.553 3.77 0 .598-.098 1.174-.292 1.73A5.287 5.287 0 0 1 10 9.104l5.5 5.459-.917.916ZM5.854 9.895c1.125 0 2.083-.4 2.875-1.198a3.95 3.95 0 0 0 1.188-2.885 3.95 3.95 0 0 0-1.188-2.886C7.938 2.13 6.98 1.73 5.854 1.73c-1.139 0-2.107.4-2.906 1.198-.799.799-1.198 1.76-1.198 2.886 0 1.125.4 2.086 1.198 2.885.799.799 1.767 1.198 2.906 1.198Z"/></svg><span _ngcontent-ng-c139922363 class="adev-nav-item__label adev-search-desktop" aria-label="Open search dialog with "><kbd _ngcontent-ng-c139922363><!--ngetn--></kbd><kbd _ngcontent-ng-c139922363>K</kbd></span></button></li><li _ngcontent-ng-c139922363 class="adev-nav-item"><a _ngcontent-ng-c139922363 href="/docs"><svg _ngcontent-ng-c139922363="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="14" height="18" fill="inherit"><path _ngcontent-ng-c139922363="" d="M3.645 13.792h6.708v-1.25H3.645v1.25Zm0-3.542h6.708V9H3.645v1.25Zm-2.063 7.083a1.2 1.2 0 0 1-.875-.375 1.2 1.2 0 0 1-.375-.875V1.917a1.2 1.2 0 0 1 .375-.875 1.2 1.2 0 0 1 .875-.375h7.52l4.563 4.562v10.854a1.2 1.2 0 0 1-.375.875 1.2 1.2 0 0 1-.875.375H1.582ZM8.478 5.792V1.917H1.582v14.166h10.833V5.792H8.478Z"/></svg><span _ngcontent-ng-c139922363 class="adev-nav-item__label">Docs</span></a></li><li _ngcontent-ng-c139922363 class="adev-nav-item"><a _ngcontent-ng-c139922363 href="/tutorials"><svg _ngcontent-ng-c139922363="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="18" height="10" fill="inherit"><path _ngcontent-ng-c139922363="" d="m5.668 10-5-5 5-5 1.187 1.188L3.022 5.02l3.813 3.812L5.668 10Zm6.667 0-1.188-1.188L14.98 4.98l-3.812-3.812L12.335 0l5 5-5 5Z"/></svg><span _ngcontent-ng-c139922363 class="adev-nav-item__label">Tutorials</span></a></li><li _ngcontent-ng-c139922363 class="adev-nav-item"><a _ngcontent-ng-c139922363 href="/playground"><svg _ngcontent-ng-c139922363="" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path _ngcontent-ng-c139922363="" d="M450.001-611.691v-32.386q-39.385-9.923-64.692-41.897-25.308-31.975-25.308-74.025 0-49.922 35.038-84.96 35.039-35.038 84.961-35.038t84.961 35.038q35.038 35.038 35.038 84.96 0 42.05-25.308 74.025-25.307 31.974-64.692 41.897v32.386l273.846 157.538q17.173 9.912 26.663 26.582 9.491 16.671 9.491 36.495v62.152q0 19.824-9.491 36.495-9.49 16.67-26.663 26.582L516.154-111.771q-17.203 9.846-36.217 9.846t-36.091-9.846L176.155-265.847q-17.173-9.912-26.663-26.582-9.491-16.671-9.491-36.495v-62.152q0-19.824 9.491-36.495 9.49-16.67 26.663-26.582l273.846-157.538Zm-6.155 364.537L200-387.461v58.537q0 3.078 1.539 5.962 1.538 2.885 4.615 4.808l267.692 154.692q3.077 1.923 6.154 1.923t6.154-1.923l267.692-154.692q3.077-1.923 4.615-4.808 1.539-2.884 1.539-5.962v-58.537L516.154-247.154q-17.203 9.847-36.217 9.847t-36.091-9.847Zm6.155-162.847V-542.77L250.46-427.691l223.386 128.846q3.077 1.924 6.154 1.924t6.154-1.924l223.001-128.846L509.999-542.77v132.769h-59.998ZM480-699.999q25 0 42.5-17.5t17.5-42.5q0-25-17.5-42.5t-42.5-17.5q-25 0-42.5 17.5t-17.5 42.5q0 25 17.5 42.5t42.5 17.5Zm-2.308 538.46Z"/></svg><span _ngcontent-ng-c139922363 class="adev-nav-item__label">Playground</span></a></li><li _ngcontent-ng-c139922363 class="adev-nav-item"><a _ngcontent-ng-c139922363 href="/reference"><svg _ngcontent-ng-c139922363="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="14" height="18" fill="inherit"><path _ngcontent-ng-c139922363="" d="M3.645 13.792h6.708v-1.25H3.645v1.25Zm0-3.542h6.708V9H3.645v1.25Zm-2.063 7.083a1.2 1.2 0 0 1-.875-.375 1.2 1.2 0 0 1-.375-.875V1.917a1.2 1.2 0 0 1 .375-.875 1.2 1.2 0 0 1 .875-.375h7.52l4.563 4.562v10.854a1.2 1.2 0 0 1-.375.875 1.2 1.2 0 0 1-.875.375H1.582ZM8.478 5.792V1.917H1.582v14.166h10.833V5.792H8.478Z"/></svg><span _ngcontent-ng-c139922363 class="adev-nav-item__label">Reference</span></a></li></ul><div _ngcontent-ng-c139922363 class="adev-nav__bottom"><div _ngcontent-ng-c139922363 class="adev-nav-item"><button _ngcontent-ng-c139922363 type="button" aria-label="Open social media links" class="cdk-menu-trigger" role="button" data-cdk-menu-stack-id="cdk-menu-stack-1" aria-haspopup="menu" aria-expanded="false"><docs-icon _ngcontent-ng-c139922363 aria-hidden="true" translate="no" role="presentation" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">more_horiz</docs-icon></button><!----><!----></div><div _ngcontent-ng-c139922363 class="adev-nav-item"><button _ngcontent-ng-c139922363 type="button" aria-label="Open theme picker" class="cdk-menu-trigger" role="button" data-cdk-menu-stack-id="cdk-menu-stack-2" aria-haspopup="menu" aria-expanded="false"><docs-icon _ngcontent-ng-c139922363 aria-hidden="true" translate="no" role="presentation" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0"><!----><!----><!----></docs-icon></button><!----><!----></div></div></nav><!----></div></div><!----><div _ngcontent-ng-c2303807924 class="docs-app-main-content"><!----><!----><router-outlet _ngcontent-ng-c2303807924></router-outlet><adev-main ngh="4"><router-outlet></router-outlet><adev-home _nghost-ng-c2288387504 ngh="3"><adev-home-animation _ngcontent-ng-c2288387504 _nghost-ng-c694462223 style="--meteor-width: 120px; --meteor-height: 170.39999999999998px; --meteor-tail-length: 208.41343526749898px; --meteor-tilt-angle: -0.6135561455119167rad; --meteor-gap: 159.60000000000002px;" ngh="2"><div _ngcontent-ng-c694462223 class="animation"><div _ngcontent-ng-c694462223 adevanimationlayer layerid="banners" class="banners-layer layer"><a _ngcontent-ng-c694462223 href="https://blog.angular.dev/meet-angular-v19-7b29dfd05b84" target="_blank" class="adev-banner"><h1 _ngcontent-ng-c694462223 tabindex="-1">Angular v19 is here!</h1><p _ngcontent-ng-c694462223 class="adev-banner-cta">Read about our newest release.</p></a><div _ngcontent-ng-c694462223 class="learn-angular"><a _ngcontent-ng-c694462223 class="adev-cta" href="/tutorials/learn-angular"><button _ngcontent-ng-c694462223 aria-label="Learn Angular" class="docs-primary-btn" text="Learn Angular"> Learn Angular </button></a><div _ngcontent-ng-c694462223 class="adev-arrow"></div></div></div><div _ngcontent-ng-c694462223 adevanimationlayer layerid="logo" class="logo-layer layer"><svg _ngcontent-ng-c694462223="" viewBox="0 0 1280 400" xmlns="http://www.w3.org/2000/svg" class="svg"><defs _ngcontent-ng-c694462223=""><linearGradient _ngcontent-ng-c694462223="" id="gradient" gradientUnits="userSpaceOnUse" gradientTransform="rotate(0 640 125)"><stop _ngcontent-ng-c694462223="" offset="0" stop-color="#ed0100"/><stop _ngcontent-ng-c694462223="" offset="0.25" stop-color="#e449b4"/><stop _ngcontent-ng-c694462223="" offset="0.5" stop-color="#ae3bfc"/><stop _ngcontent-ng-c694462223="" offset="1" stop-color="#7f15fd"/><animateTransform _ngcontent-ng-c694462223="" attributeName="gradientTransform" type="rotate" from="0 640 125" to="360 640 125" dur="6.5s" repeatCount="indefinite"/></linearGradient></defs><g _ngcontent-ng-c694462223="" fill="url(#gradient)" class="wrapper"><g _ngcontent-ng-c694462223="" class="logo"><g _ngcontent-ng-c694462223="" class="shield"><path _ngcontent-ng-c694462223="" d="M311.8,101.7L302,255.6L208.3,53.8L311.8,101.7ZM246.9,300.7L176.1,341.1L105.3,300.7L246.9,300.7ZM50.1,255.6L40.4,101.7L143.9,53.8L50.1,255.6Z" class="shield-base"/><path _ngcontent-ng-c694462223="" d="M176.1,130.4L213.2,220.6L139,220.6L176.1,130.4Z" class="shield-middle"/><path _ngcontent-ng-c694462223="" d="M106.419,301.339L105.3,300.7L119.7,265.8L232.5,265.8L246.9,300.7L245.781,301.339L106.419,301.339Z" class="shield-bottom-a-arc"/><path _ngcontent-ng-c694462223="" d="M245.78,301.339L106.42,301.339L68.889,279.923L283.311,279.923L245.78,301.339Z" class="shield-bottom-extension"/></g><path _ngcontent-ng-c694462223="" d="M515.4,288L553.1,288L484.4,92.7L440.7,92.7L372,288L409.7,288L425.8,239.9L499.2,239.9L515.4,288ZM435.4,211.4L461.8,132.8L463.3,132.8L489.7,211.4L435.4,211.4Z" class="capt-a-letter letter"/><path _ngcontent-ng-c694462223="" d="M590.4,202.2L590.4,288L555.9,288L555.9,141.6L588.9,141.6L588.9,166.5L590.6,166.5C594,158.3 599.4,151.8 606.8,147C614.2,142.2 623.4,139.8 634.3,139.8C644.4,139.8 653.2,142 660.8,146.3C668.3,150.6 674.2,156.9 678.3,165.1C682.5,173.3 684.5,183.2 684.4,194.9L684.4,288L649.9,288L649.9,200.1C649.9,190.3 647.4,182.7 642.3,177.1C637.2,171.6 630.3,168.8 621.4,168.8C615.4,168.8 610,170.1 605.3,172.8C600.6,175.4 597,179.2 594.3,184.2C591.8,189.1 590.4,195.1 590.4,202.2Z" class="n-letter letter"/><path _ngcontent-ng-c694462223="" d="M760.5,345.9C748.1,345.9 737.5,344.2 728.6,340.9C719.7,337.6 712.6,333.1 707.2,327.5C701.8,321.9 698,315.7 696,308.9L727.1,301.4C728.5,304.3 730.5,307.1 733.2,309.9C735.9,312.7 739.5,315.1 744,317C748.5,318.9 754.3,319.8 761.2,319.8C771,319.8 779.1,317.4 785.5,312.7C791.9,308 795.1,300.2 795.1,289.4L795.1,261.7L793.4,261.7C791.6,265.3 789,268.9 785.6,272.7C782.2,276.5 777.7,279.6 772.2,282.1C766.6,284.6 759.7,285.9 751.3,285.9C740.1,285.9 729.9,283.2 720.7,277.9C711.6,272.6 704.3,264.6 699,254.1C693.6,243.5 690.9,230.3 690.9,214.3C690.9,198.2 693.6,184.6 699,173.5C704.4,162.4 711.6,154 720.8,148.2C730,142.4 740.2,139.6 751.4,139.6C760,139.6 767.1,141 772.6,143.9C778.2,146.8 782.6,150.3 785.9,154.3C789.2,158.3 791.7,162.1 793.4,165.7L795.3,165.7L795.3,141.5L829.3,141.5L829.3,290.3C829.3,302.8 826.3,313.2 820.3,321.4C814.3,329.6 806.2,335.7 795.8,339.8C785.4,343.9 773.6,345.9 760.5,345.9ZM760.8,258.8C768.1,258.8 774.3,257 779.5,253.5C784.6,249.9 788.6,244.8 791.2,238.2C793.9,231.5 795.2,223.5 795.2,214.2C795.2,205 793.9,196.9 791.2,190C788.6,183.1 784.7,177.7 779.6,173.8C774.5,170 768.2,168 760.8,168C753.1,168 746.7,170 741.5,174C736.4,178 732.5,183.5 729.9,190.4C727.3,197.4 726,205.3 726,214.1C726,223.1 727.3,230.9 730,237.6C732.6,244.3 736.5,249.5 741.7,253.2C746.8,256.9 753.2,258.8 760.8,258.8Z" class="g-letter letter"/><path _ngcontent-ng-c694462223="" d="M933.8,226.4L933.8,141.6L968.3,141.6L968.3,288L934.8,288L934.8,262L933.3,262C930,270.2 924.6,276.9 917,282.1C909.5,287.3 900.2,289.9 889.2,289.9C879.6,289.9 871.1,287.8 863.8,283.5C856.5,279.2 850.7,273 846.6,264.7C842.5,256.5 840.4,246.5 840.4,234.8L840.4,141.6L875,141.6L875,229.5C875,238.8 877.5,246.2 882.6,251.6C887.7,257.1 894.4,259.8 902.6,259.8C907.7,259.8 912.6,258.6 917.4,256.1C922.2,253.6 926.1,249.9 929.2,245C932.3,240 933.8,233.8 933.8,226.4Z" class="u-letter letter"/><rect _ngcontent-ng-c694462223="" x="979.6" y="92.7" width="34.5" height="195.3" class="l-letter letter"/><path _ngcontent-ng-c694462223="" d="M1068.9,290.9C1059.6,290.9 1051.3,289.2 1043.9,285.9C1036.5,282.6 1030.6,277.6 1026.4,271.1C1022.1,264.6 1020,256.5 1020,246.9C1020,238.6 1021.5,231.8 1024.6,226.4C1027.7,221 1031.8,216.7 1037.1,213.4C1042.4,210.2 1048.3,207.7 1055,206C1061.6,204.3 1068.5,203.1 1075.6,202.3C1084.2,201.4 1091.1,200.6 1096.5,199.9C1101.8,199.2 1105.7,198 1108.2,196.5C1110.6,194.9 1111.9,192.5 1111.9,189.2L1111.9,188.6C1111.9,181.4 1109.8,175.9 1105.5,171.9C1101.2,168 1095.1,166 1087.1,166C1078.6,166 1072,167.8 1067,171.5C1062.1,175.2 1058.8,179.5 1057,184.6L1024.8,180C1027.3,171.1 1031.5,163.7 1037.4,157.6C1043.2,151.6 1050.4,147.1 1058.8,144.1C1067.3,141.1 1076.6,139.6 1086.8,139.6C1093.9,139.6 1100.9,140.4 1107.9,142.1C1114.9,143.8 1121.3,146.5 1127.1,150.3C1132.9,154.1 1137.5,159.2 1141.1,165.7C1144.6,172.2 1146.4,180.3 1146.4,190L1146.4,288L1113.2,288L1113.2,267.9L1112.1,267.9C1110,272 1107.1,275.8 1103.3,279.3C1099.5,282.8 1094.8,285.7 1089.1,287.8C1083.2,289.9 1076.6,290.9 1068.9,290.9ZM1077.9,265.6C1084.8,265.6 1090.8,264.2 1095.9,261.5C1101,258.7 1104.9,255.1 1107.7,250.5C1110.5,245.9 1111.8,240.9 1111.8,235.5L1111.8,218.2C1110.7,219.1 1108.9,219.9 1106.3,220.7C1103.7,221.5 1100.9,222.1 1097.7,222.7C1094.5,223.3 1091.4,223.8 1088.3,224.2C1085.2,224.6 1082.5,225 1080.2,225.3C1075.1,226 1070.4,227.1 1066.4,228.7C1062.3,230.3 1059.1,232.5 1056.8,235.3C1054.4,238.1 1053.3,241.8 1053.3,246.2C1053.3,252.6 1055.6,257.4 1060.3,260.6C1064.8,264 1070.7,265.6 1077.9,265.6Z" class="a-letter letter"/><path _ngcontent-ng-c694462223="" d="M1156.9,288L1156.9,141.6L1190.4,141.6L1190.4,166L1191.9,166C1194.6,157.5 1199.2,151 1205.7,146.4C1212.2,141.8 1219.7,139.5 1228.1,139.5C1230,139.5 1232.2,139.6 1234.5,139.7C1236.9,139.9 1238.9,140.1 1240.5,140.4L1240.5,172.1C1239,171.6 1236.7,171.1 1233.6,170.7C1230.5,170.3 1227.4,170.1 1224.5,170.1C1218.2,170.1 1212.6,171.5 1207.6,174.2C1202.6,176.9 1198.7,180.6 1195.8,185.4C1192.9,190.2 1191.5,195.7 1191.5,201.9L1191.5,288L1156.9,288Z" class="r-letter letter"/></g></g></svg></div><!----><!----><div _ngcontent-ng-c694462223 adevanimationlayer layerid="works-at-any-scale" class="works-at-any-scale-layer layer"><h2 _ngcontent-ng-c694462223>Works at any scale</h2><p _ngcontent-ng-c694462223> Angular lets you start small on a well-lit path and supports you as your team and apps grow. </p></div><div _ngcontent-ng-c694462223 adevanimationlayer layerid="meteor-field" class="meteor-field-layer layer"><div _ngcontent-ng-c694462223 class="field" style="width: 120px; height: 170.39999999999998px; margin-left: NaNpx; margin-top: NaNpx;"><div _ngcontent-ng-c694462223 class="meteor mt-1 type-2"></div><!----></div></div><!----><div _ngcontent-ng-c694462223 adevanimationlayer layerid="loved-by-millions" class="loved-by-millions-layer layer"><h2 _ngcontent-ng-c694462223>Loved by millions</h2><p _ngcontent-ng-c694462223> Join the millions of developers all over the world building with Angular in a thriving and friendly community. </p></div><div _ngcontent-ng-c694462223 adevanimationlayer layerid="build-for-everyone" class="build-for-everyone-layer layer"><h2 _ngcontent-ng-c694462223 class="title">Build for everyone</h2><p _ngcontent-ng-c694462223> Rely on Angular's built-in hydration, internationalization, security, and accessibility support to build for everyone around the world. </p></div></div></adev-home-animation><div _ngcontent-ng-c2288387504 class="spacer"></div><!----><div _ngcontent-ng-c2288387504 class="adev-editor-scroll-container"><div _ngcontent-ng-c2288387504 class="adev-code-editor"><!----><!----><!----></div></div></adev-home><!----></adev-main><!----><footer _ngcontent-ng-c2303807924 adev-footer _nghost-ng-c2442385480 ngh="0"><div _ngcontent-ng-c2442385480 class="adev-footer-container"><div _ngcontent-ng-c2442385480 class="adev-footer-columns"><div _ngcontent-ng-c2442385480><h2 _ngcontent-ng-c2442385480>Social Media</h2><ul _ngcontent-ng-c2442385480><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 title="Angular blog" href="https://blog.angular.dev">Blog</a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 title="X (formerly Twitter)" href="https://x.com/angular">X (formerly Twitter)</a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 title="Bluesky" href="https://bsky.app/profile/angular.dev">Bluesky</a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 title="YouTube" href="https://www.youtube.com/angular">YouTube</a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://discord.gg/angular" title="Join the discussions at Angular Community Discord server."> Discord </a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 title="GitHub" href="https://github.com/angular/angular">GitHub</a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://stackoverflow.com/questions/tagged/angular" title="Stack Overflow: where the community answers your technical Angular questions."> Stack Overflow </a></li></ul></div><div _ngcontent-ng-c2442385480><h2 _ngcontent-ng-c2442385480>Community</h2><ul _ngcontent-ng-c2442385480><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://github.com/angular/angular/blob/main/CONTRIBUTING.md" title="Contribute to Angular"> Contribute </a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://github.com/angular/code-of-conduct/blob/main/CODE_OF_CONDUCT.md" title="Treating each other with respect."> Code of Conduct </a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://github.com/angular/angular/issues" title="Post issues and suggestions on github."> Report Issues </a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://devlibrary.withgoogle.com/products/angular?sort=updated" title="Google's DevLibrary"> Google's DevLibrary </a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://developers.google.com/community/experts/directory?specialization=angular" title="Angular Google Developer Experts"> Angular Google Developer Experts </a></li></ul></div><div _ngcontent-ng-c2442385480><h2 _ngcontent-ng-c2442385480>Resources</h2><ul _ngcontent-ng-c2442385480><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 routerlink="/press-kit" title="Press contacts, logos, and branding." href="/press-kit">Press Kit</a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 routerlink="/roadmap" title="Roadmap" href="/roadmap">Roadmap</a></li></ul></div><div _ngcontent-ng-c2442385480><h2 _ngcontent-ng-c2442385480>Languages</h2><ul _ngcontent-ng-c2442385480><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://angular.cn/" title="简体中文版">简体中文版</a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://angular.tw/" title="正體中文版">正體中文版</a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://angular.jp/" title="日本語版">日本語版</a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://angular.kr/" title="한국어">한국어</a></li><li _ngcontent-ng-c2442385480><a _ngcontent-ng-c2442385480 href="https://angular-gr.web.app" title="Ελληνικά"> Ελληνικά </a></li></ul></div></div><p _ngcontent-ng-c2442385480 class="docs-license"> Super-powered by Google ©2010-2025. Code licensed under an <a _ngcontent-ng-c2442385480 routerlink="/license" title="License text" href="/license">MIT-style License</a> . Documentation licensed under <a _ngcontent-ng-c2442385480 href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a> . </p></div></footer><!----></div></adev-root> <script src="main-PXOQ3ICD.js" type="module"></script> <div class="cdk-live-announcer-element cdk-visually-hidden" aria-atomic="true" aria-live="polite" id="cdk-live-announcer-0"></div><script id="ng-state" type="application/json">{"__nghData__":[{},{"n":{"21":"20f","25":"24f","75":"74f","81":"80f"},"t":{"29":"t2","30":"t3","36":"t4","76":"t5","81":"t6","82":"t7","83":"t8","84":"t9","86":"t10"},"c":{"29":[{"i":"t2","r":1}],"30":[],"32":[],"36":[],"73":[],"76":[],"79":[],"81":[],"82":[],"83":[],"84":[],"86":[]}},{"t":{"12":"t14","13":"t15","19":"t16"},"c":{"12":[{"i":"t14","r":1}],"13":[],"19":[{"i":"t16","r":1,"t":{"3":"t17"},"c":{"3":[{"i":"t17","r":1}]}}]}},{"t":{"1":"t18","4":"t19","5":"t20","6":"t21"},"c":{"1":[{"i":"t18","r":1}],"4":[],"5":[],"6":[]}},{"c":{"0":[{"i":"c2288387504","r":1}]}},{"t":{"2":"t0","3":"t1","6":"t11","8":"t12","9":"t13","12":"t22"},"c":{"2":[],"3":[],"6":[],"8":[],"9":[],"11":[{"i":"c2556530580","r":1}],"12":[{"i":"t22","r":1}]}}]}</script></body></html>