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"> <link rel="preload" href="/assets/textures/gradient.jpg" as="image"> <style>@charset "UTF-8";.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)}:nth-child(6n+1){--selection-color: var(--vivid-pink)}:nth-child(6n+2){--selection-background: var(--hot-pink);--selection-color: var(--hot-pink)}:nth-child(6n+3){--selection-background: var(--electric-violet);--selection-color: var(--electric-violet)}:nth-child(6n+4){--selection-background: var(--french-violet);--selection-color: var(--french-violet)}:nth-child(6n+5){--selection-background: var(--indigo-blue);--selection-color: var(--indigo-blue)}:nth-child(6n+6){--selection-background: var(--bright-blue);--selection-color: var(--bright-blue)}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} </style><link rel="stylesheet" href="styles-QCYPH57K.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-QCYPH57K.css"></noscript><style ng-app-id="ng">[_nghost-ng-c3997628623]{max-width:2560px;margin-inline:auto;display:flex;flex-direction:row;align-items:flex-start;min-height:100vh}@media (min-width: 700px) and (max-width: 900px){[_nghost-ng-c3997628623] docs-top-level-banner[_ngcontent-ng-c3997628623]{top:4.6875rem}}@media (max-width: 700px){[_nghost-ng-c3997628623] docs-top-level-banner[_ngcontent-ng-c3997628623]{top:3.75rem;transform:translateY(0);transition:transform .3s ease-out .6s}}@media (max-width: 900px){[_nghost-ng-c3997628623] docs-top-level-banner[_ngcontent-ng-c3997628623]{z-index:calc(var(--z-index-nav) - 1)}}@media (min-width: 700px) and (max-width: 900px){[_nghost-ng-c3997628623]:has(adev-secondary-navigation) docs-top-level-banner[_ngcontent-ng-c3997628623]{top:8.125rem}}@media (max-width: 700px){[_nghost-ng-c3997628623]:has(.adev-nav-primary--open) docs-top-level-banner[_ngcontent-ng-c3997628623]{transform:translateY(-3.75rem);transition:transform .3s ease-in}}@media (max-width: 900px){[_nghost-ng-c3997628623]{flex-direction:column}}[_nghost-ng-c3997628623]:has(.docs-nav-secondary--open) .docs-app-main-content[_ngcontent-ng-c3997628623]:after, [_nghost-ng-c3997628623]:has(.adev-nav-primary--open) .docs-app-main-content[_ngcontent-ng-c3997628623]:after{visibility:visible;opacity:1}[_nghost-ng-c3997628623]:has(.adev-home) .adev-nav[_ngcontent-ng-c3997628623]{width:0;height:0}@media (min-width: 900px){[_nghost-ng-c3997628623]:has(.adev-home) footer[_ngcontent-ng-c3997628623]{margin-left:var(--primary-nav-width)}}.adev-skip[_ngcontent-ng-c3997628623]{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-c3997628623]:focus{transform:translateY(0)}.docs-app-main-content[_ngcontent-ng-c3997628623]{display:flex;flex-direction:column;min-height:100vh;width:100%}.docs-app-main-content[_ngcontent-ng-c3997628623] [_ngcontent-ng-c3997628623]: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: 700px) and (max-width: 900px){.docs-app-main-content[_ngcontent-ng-c3997628623]{width:100%}}footer[_ngcontent-ng-c3997628623]{margin-top:auto}</style><style ng-app-id="ng">[_nghost-ng-c249881476]{display:flex;position:sticky;top:0;z-index:var(--z-index-nav)}[_nghost-ng-c249881476] .adev-mobile-nav-button[_ngcontent-ng-c249881476]{display:flex;align-items:center;gap:.75rem}@media (min-width: 700px) and (max-width: 900px){[_nghost-ng-c249881476]:has(.adev-nav-primary--open){z-index:50}}.adev-mobile-nav-bar[_ngcontent-ng-c249881476]{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:100vw;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-c249881476]{display:flex}}.adev-mobile-nav-bar[_ngcontent-ng-c249881476]:has(+.adev-nav-primary--open){transform:translateY(-100%);transition:transform .3s ease-in}.adev-mobile-nav-bar[_ngcontent-ng-c249881476] docs-icon[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}.adev-nav-primary[_ngcontent-ng-c249881476]{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)}.adev-nav-primary.adev-nav-primary--next[_ngcontent-ng-c249881476], .adev-nav-primary.adev-nav-primary--rc[_ngcontent-ng-c249881476]{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-c249881476]{background-color:color-mix(in srgb,var(--symbolic-gray),transparent 30%)}.adev-nav-primary[_ngcontent-ng-c249881476] > div[_ngcontent-ng-c249881476]{display:flex;flex-direction:column;align-items:center;justify-content:center}@media (max-width: 700px){.adev-nav-primary[_ngcontent-ng-c249881476]{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-c249881476]{transform:translate(0);transition:transform .3s ease-out .1s}}@media (max-width: 700px) and (prefers-reduced-motion: reduce-motion){.adev-nav-primary[_ngcontent-ng-c249881476]{transition:none}}@media (min-width: 700px) and (max-width: 900px){.adev-nav-primary[_ngcontent-ng-c249881476]{flex-direction:row;width:100vw;padding-inline:calc(var(--layout-padding) - 1.25rem);height:auto;padding-block:0}}@media (min-width: 775px){.adev-nav-primary[_ngcontent-ng-c249881476]{border-inline-end:1px solid var(--septenary-contrast)}}@media (max-width: 700px){.adev-nav-primary[_ngcontent-ng-c249881476]{border-inline-end:1px solid var(--septenary-contrast)}}.adev-nav__top[_ngcontent-ng-c249881476]{padding:0;margin:0;list-style:none;display:flex;flex-direction:column}@media (min-width: 700px) and (max-width: 900px){.adev-nav__top[_ngcontent-ng-c249881476]{flex-direction:row}}.adev-nav__top[_ngcontent-ng-c249881476] .adev-version-button[_ngcontent-ng-c249881476]{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-c249881476] .adev-version-button[_ngcontent-ng-c249881476]:hover{color:var(--primary-contrast)}.adev-nav__top[_ngcontent-ng-c249881476] .adev-version-button[_ngcontent-ng-c249881476] docs-icon[_ngcontent-ng-c249881476]{font-size:inherit;line-height:inherit;transition:transform .2s ease}@media (max-width: 700px){.adev-nav__top[_ngcontent-ng-c249881476] .adev-version-button.adev-mini-menu-open[_ngcontent-ng-c249881476]:after{transform:rotate(-90deg)}}@media (min-width: 900px){.adev-nav__top[_ngcontent-ng-c249881476] .adev-version-button.adev-mini-menu-open[_ngcontent-ng-c249881476]:after{transform:rotate(-90deg)}}@media (min-width: 700px) and (max-width: 900px){.adev-nav__top[_ngcontent-ng-c249881476] > li[_ngcontent-ng-c249881476]:first-of-type{padding-inline-start:1.25rem}.adev-nav__top[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476]{padding-inline:1rem}}.adev-nav__bottom[_ngcontent-ng-c249881476]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1rem}@media (min-width: 700px) and (max-width: 900px){.adev-nav__bottom[_ngcontent-ng-c249881476]{flex-direction:row;margin-inline-end:1.25rem}}.adev-nav__bottom[_ngcontent-ng-c249881476] .adev-nav-item--active[_ngcontent-ng-c249881476] button[_ngcontent-ng-c249881476] docs-icon[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}.adev-nav__bottom[_ngcontent-ng-c249881476] button[_ngcontent-ng-c249881476]{border:none;background-color:transparent;cursor:pointer;width:100%;padding-inline:1rem}@media (min-width: 700px) and (max-width: 900px){.adev-nav__bottom[_ngcontent-ng-c249881476] button[_ngcontent-ng-c249881476]{padding-inline:.5rem}}.adev-nav__bottom[_ngcontent-ng-c249881476] button[_ngcontent-ng-c249881476] docs-icon[_ngcontent-ng-c249881476]{color:var(--quaternary-contrast);font-size:1.5rem}@media (max-width: 900px){.adev-nav__bottom[_ngcontent-ng-c249881476] button[_ngcontent-ng-c249881476] docs-icon[_ngcontent-ng-c249881476]{font-size:1.25rem}}.adev-nav__bottom[_ngcontent-ng-c249881476] button[_ngcontent-ng-c249881476]:hover docs-icon[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}.adev-nav-item--logo[_ngcontent-ng-c249881476] a[_ngcontent-ng-c249881476]{height:34px}.adev-close-nav[_ngcontent-ng-c249881476]{display:none;color:var(--primary-contrast)}@media (max-width: 700px){.adev-close-nav[_ngcontent-ng-c249881476]{display:block}}.adev-search-desktop[_ngcontent-ng-c249881476]{height:1.375rem;text-transform:capitalize}@media (max-width: 900px){.adev-search-desktop[_ngcontent-ng-c249881476]{display:none}}.adev-sub-navigation-hidden[_ngcontent-ng-c249881476]{display:none}.adev-secondary-tablet-bar[_ngcontent-ng-c249881476]{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-c249881476] button[_ngcontent-ng-c249881476]{display:flex;gap:.5rem;align-items:center;color:var(--primary-contrast);padding:0;font-weight:500}@media (min-width: 900px){.adev-secondary-tablet-bar[_ngcontent-ng-c249881476]{display:none}}@media (max-width: 700px){.adev-secondary-tablet-bar[_ngcontent-ng-c249881476]{display:none}}</style><style ng-app-id="ng">.adev-mini-menu[_ngcontent-ng-c249881476]{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: 700px) and (max-width: 900px){.adev-mini-menu[_ngcontent-ng-c249881476]{top:75px;left:5px}}.adev-mini-menu[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476]{list-style:none}.adev-mini-menu[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476] button[_ngcontent-ng-c249881476]{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-c249881476] li[_ngcontent-ng-c249881476] button[_ngcontent-ng-c249881476] docs-icon[_ngcontent-ng-c249881476]{font-size:1.5rem;color:var(--quaternary-contrast);transition:color .3s ease}.adev-mini-menu[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476] button[_ngcontent-ng-c249881476]:hover{background-color:var(--senary-contrast)}.adev-mini-menu[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476] button[_ngcontent-ng-c249881476]:hover span[_ngcontent-ng-c249881476], .adev-mini-menu[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476] button[_ngcontent-ng-c249881476]:hover docs-icon[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}.adev-mini-menu[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476] a[_ngcontent-ng-c249881476]{display:flex;justify-content:center;align-items:center;padding:1rem;min-width:50px}.adev-mini-menu[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476] a[_ngcontent-ng-c249881476] svg[_ngcontent-ng-c249881476]{fill:var(--quaternary-contrast);transition:fill .3s ease}.adev-mini-menu[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476] a[_ngcontent-ng-c249881476]:hover{background-color:var(--senary-contrast)}.adev-mini-menu[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476] a[_ngcontent-ng-c249881476]:hover svg[_ngcontent-ng-c249881476]{fill:var(--primary-contrast)}.adev-mini-menu[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476] span[_ngcontent-ng-c249881476]{color:var(--quaternary-contrast);transition:color .3s ease}.adev-mini-menu-open[_ngcontent-ng-c249881476]{display:block}.adev-version-picker[_ngcontent-ng-c249881476]{overflow-y:auto;max-height:90vh;top:30px;left:10px;position:absolute;bottom:auto}.adev-version-picker[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476]{padding-inline:0}.adev-version-picker[_ngcontent-ng-c249881476] li[_ngcontent-ng-c249881476] a[_ngcontent-ng-c249881476]{line-height:1em}@media (min-width: 700px) and (max-width: 900px){.adev-version-picker[_ngcontent-ng-c249881476]{top:30px;left:auto;bottom:auto}}</style><style ng-app-id="ng">.adev-nav-item[_ngcontent-ng-c249881476]{color:var(--quaternary-contrast);position:relative;width:6.875rem}@media (max-width: 700px){.adev-nav-item[_ngcontent-ng-c249881476]{width:5.05rem}}@media (min-width: 700px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c249881476]{display:flex;align-items:center;justify-content:center;width:auto}}.adev-nav-item[_ngcontent-ng-c249881476]: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: 700px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c249881476]:before{width:auto;top:auto;right:0;height:2px}}@media (min-width: 700px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c249881476]:not(.adev-nav-item--logo) a[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476]:not(.adev-nav-item--logo) .adev-nav-button[_ngcontent-ng-c249881476]{gap:.25rem}}.adev-nav-item[_ngcontent-ng-c249881476] .adev-nav-button[_ngcontent-ng-c249881476]{width:100%;font-weight:500}.adev-nav-item[_ngcontent-ng-c249881476] a[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476] .adev-nav-button[_ngcontent-ng-c249881476]{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: 700px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c249881476] a[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476] .adev-nav-button[_ngcontent-ng-c249881476]{flex-direction:row}}.adev-nav-item__label[_ngcontent-ng-c249881476]{margin:0;font-size:.813;color:inherit}.adev-nav-item__label[_ngcontent-ng-c249881476] abbr[_ngcontent-ng-c249881476]{font-size:.688}.adev-nav-item[_ngcontent-ng-c249881476] i[_ngcontent-ng-c249881476]{color:var(--quaternary-contrast);transition:color .3s ease}.adev-nav-item[_ngcontent-ng-c249881476] span[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476] abbr[_ngcontent-ng-c249881476]{transition:color .3s ease}.adev-nav-item[_ngcontent-ng-c249881476]:hover a[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476]:hover .adev-nav-button[_ngcontent-ng-c249881476]{fill:var(--primary-contrast)}.adev-nav-item[_ngcontent-ng-c249881476]:hover span[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476]:hover abbr[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476]:hover i[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}.adev-nav-item--active[_ngcontent-ng-c249881476]:before{opacity:1;transform:scaleY(1)}.adev-nav-item--active[_ngcontent-ng-c249881476]:not(.adev-nav-item--logo) path[_ngcontent-ng-c249881476]{fill:var(--primary-contrast)}.adev-nav-item--active[_ngcontent-ng-c249881476] span[_ngcontent-ng-c249881476], .adev-nav-item--active[_ngcontent-ng-c249881476] abbr[_ngcontent-ng-c249881476], .adev-nav-item--active[_ngcontent-ng-c249881476] i[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}</style><style ng-app-id="ng">.docs-icon_high-contrast[_ngcontent-ng-c1974536348]{color:var(--primary-contrast)}/*# sourceMappingURL=icon.component.css.map */</style><style ng-app-id="ng">[_nghost-ng-c1359865457]{width:100%}.docs-dark-mode [_nghost-ng-c1359865457] .adev-editor-scroll-container[_ngcontent-ng-c1359865457] img[_ngcontent-ng-c1359865457]{content:url("./media/editor-dark-horizontal-GYEXDISV.svg")}@media (max-width: 775px){.docs-dark-mode [_nghost-ng-c1359865457] .adev-editor-scroll-container[_ngcontent-ng-c1359865457] img[_ngcontent-ng-c1359865457]{content:url("./media/editor-dark-vertical-AL4QYX2T.svg")}}.docs-light-mode [_nghost-ng-c1359865457] .adev-editor-scroll-container[_ngcontent-ng-c1359865457] img[_ngcontent-ng-c1359865457]{content:url("./media/editor-light-horizontal-VWK2ERV3.svg")}@media (max-width: 775px){.docs-light-mode [_nghost-ng-c1359865457] .adev-editor-scroll-container[_ngcontent-ng-c1359865457] img[_ngcontent-ng-c1359865457]{content:url("./media/editor-light-vertical-KSMCJ4S3.svg")}}[_nghost-ng-c1359865457] .adev-banner[_ngcontent-ng-c1359865457]{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;z-index:10;border:1px solid var(--senary-contrast);background:var(--page-background);position:relative;border-radius:.25rem;padding:10px;max-width:100%;width:fit-content;box-sizing:border-box;transition:background .3s ease,border .3s ease}[_nghost-ng-c1359865457] .adev-banner[_ngcontent-ng-c1359865457] h1[_ngcontent-ng-c1359865457], [_nghost-ng-c1359865457] .adev-banner[_ngcontent-ng-c1359865457] p[_ngcontent-ng-c1359865457]{display:inline;font-size:.875rem;margin:0;background-image:var(--red-to-pink-to-purple-horizontal-gradient);background-clip:text;-webkit-background-clip:text;color:transparent;width:fit-content;font-weight:500}[_nghost-ng-c1359865457] .adev-banner[_ngcontent-ng-c1359865457] h1.adev-banner-cta[_ngcontent-ng-c1359865457], [_nghost-ng-c1359865457] .adev-banner[_ngcontent-ng-c1359865457] p.adev-banner-cta[_ngcontent-ng-c1359865457]{color:var(--tertiary-contrast)}[_nghost-ng-c1359865457] .adev-banner[_ngcontent-ng-c1359865457] h1.adev-banner-cta[_ngcontent-ng-c1359865457]:after, [_nghost-ng-c1359865457] .adev-banner[_ngcontent-ng-c1359865457] p.adev-banner-cta[_ngcontent-ng-c1359865457]: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-c1359865457] .adev-banner[_ngcontent-ng-c1359865457]:hover .adev-banner-cta[_ngcontent-ng-c1359865457]:after{transform:scaleX(1);transform-origin:bottom left}.adev-top[_ngcontent-ng-c1359865457]{position:absolute;top:0}@media (max-width: 900px){.adev-top[_ngcontent-ng-c1359865457]{top:6rem}}@media (max-width: 700px){.adev-top[_ngcontent-ng-c1359865457]{top:4.5rem}}.adev-top[_ngcontent-ng-c1359865457] .adev-top-content[_ngcontent-ng-c1359865457]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;padding-top:10px;padding-inline:var(--layout-padding);gap:.5rem}@media (min-width: 900px){.adev-top[_ngcontent-ng-c1359865457] .adev-top-content[_ngcontent-ng-c1359865457]{padding-top:var(--layout-padding);padding-left:calc(var(--layout-padding) + var(--primary-nav-width))}}.adev-home[_ngcontent-ng-c1359865457] img[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] svg[_ngcontent-ng-c1359865457]{-webkit-user-select:none;user-select:none}.adev-home[_ngcontent-ng-c1359865457] h2[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] p[_ngcontent-ng-c1359865457]{position:relative}.adev-home[_ngcontent-ng-c1359865457] h2[_ngcontent-ng-c1359865457]{font-size:4vw;font-weight:600;white-space:nowrap;margin-top:0;margin-bottom:.5em}@media screen and (max-width: 1000px){.adev-home[_ngcontent-ng-c1359865457] h2[_ngcontent-ng-c1359865457]{font-size:2rem}}.adev-home[_ngcontent-ng-c1359865457] p[_ngcontent-ng-c1359865457]{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}.adev-home[_ngcontent-ng-c1359865457] .adev-cta[_ngcontent-ng-c1359865457]{position:fixed;left:50%;bottom:10%;transform:translate(-50%);display:inline-block;padding:7px;opacity:0;visibility:hidden;transition:opacity .5s linear,visibility .5s linear}.adev-home[_ngcontent-ng-c1359865457] .adev-cta[_ngcontent-ng-c1359865457] button[_ngcontent-ng-c1359865457]{font-size:1rem;padding:1rem 1.75rem}.adev-home[_ngcontent-ng-c1359865457] .adev-cta[_ngcontent-ng-c1359865457] button[_ngcontent-ng-c1359865457]:after{font-size:1rem}.adev-home[_ngcontent-ng-c1359865457] .adev-arrow[_ngcontent-ng-c1359865457]{position:fixed;left:50%;bottom:5%;transform:translate(-50%) rotate(45deg);border:solid var(--primary-contrast);border-width:0 2px 2px 0;display:inline-block;padding:7px;opacity:0;transition:opacity .5s linear}.adev-home[_ngcontent-ng-c1359865457] .adev-canvas[_ngcontent-ng-c1359865457]{position:fixed;top:0;width:calc(100vw - 8px);height:100vh;max-width:2560px;margin-inline:auto;pointer-events:none;overflow:hidden;opacity:0}@supports (height: 100lvh){.adev-home[_ngcontent-ng-c1359865457] .adev-canvas[_ngcontent-ng-c1359865457]{height:100lvh}}.adev-home[_ngcontent-ng-c1359865457] .adev-logo[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-scale[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-lines[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-build[_ngcontent-ng-c1359865457]{height:130vh;overflow:hidden}@supports (height: 100lvh){.adev-home[_ngcontent-ng-c1359865457] .adev-logo[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-scale[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-lines[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-build[_ngcontent-ng-c1359865457]{height:130lvh}}.adev-home[_ngcontent-ng-c1359865457] .adev-logo-wordmark[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-scale-text[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-lines-text[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-build-text[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-build-webgl-text[_ngcontent-ng-c1359865457]{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;top:0;width:100vw;height:100vh;max-width:2560px;margin-inline:auto;pointer-events:none;overflow:hidden}@supports (height: 100lvh){.adev-home[_ngcontent-ng-c1359865457] .adev-logo-wordmark[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-scale-text[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-lines-text[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-build-text[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-build-webgl-text[_ngcontent-ng-c1359865457]{height:100lvh}}.adev-home[_ngcontent-ng-c1359865457] .adev-build-webgl-text[_ngcontent-ng-c1359865457]{display:none;visibility:hidden;position:fixed}.adev-home[_ngcontent-ng-c1359865457] .adev-scale-container[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-lines-container[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-build-container[_ngcontent-ng-c1359865457]{position:relative}.adev-home[_ngcontent-ng-c1359865457] .adev-lines-container[_ngcontent-ng-c1359865457]:before{content:"";position:absolute;inset:0 -50px -50px;background-color:var(--page-background);filter:blur(25px)}.adev-home[_ngcontent-ng-c1359865457] .adev-scale-wrapper[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-lines-wrapper[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-build-wrapper[_ngcontent-ng-c1359865457]{position:relative}.adev-home[_ngcontent-ng-c1359865457] .adev-build-text[_ngcontent-ng-c1359865457] h2[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-build-webgl-text[_ngcontent-ng-c1359865457] h2[_ngcontent-ng-c1359865457]{color:var(--gray-unfilled)}@media screen and (max-width: 1000px){.adev-home[_ngcontent-ng-c1359865457] .adev-build-text[_ngcontent-ng-c1359865457] h2[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-build-webgl-text[_ngcontent-ng-c1359865457] h2[_ngcontent-ng-c1359865457]{font-size:2.75rem}}.adev-home[_ngcontent-ng-c1359865457] .adev-build-text[_ngcontent-ng-c1359865457] .adev-gradient[_ngcontent-ng-c1359865457], .adev-home[_ngcontent-ng-c1359865457] .adev-build-webgl-text[_ngcontent-ng-c1359865457] .adev-gradient[_ngcontent-ng-c1359865457]{position:absolute;left:0;top:0;right:0;background:url("./media/gradient-FZRCWTCT.jpg");background-size:cover;background-position:center;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;clip-path:inset(0%)}.adev-home[_ngcontent-ng-c1359865457] .adev-editor-scroll-container[_ngcontent-ng-c1359865457]{position:relative;height:300vh;background-color:var(--page-background)}.adev-home[_ngcontent-ng-c1359865457] .adev-editor-scroll-container[_ngcontent-ng-c1359865457] .adev-sticky-editor[_ngcontent-ng-c1359865457]{position:sticky;top:calc((100vh - (100vh - 110px))/2)}@media (min-width: 700px) and (max-width: 900px){.adev-home[_ngcontent-ng-c1359865457] .adev-editor-scroll-container[_ngcontent-ng-c1359865457] .adev-sticky-editor[_ngcontent-ng-c1359865457]{top:calc((100vh - (100vh - 110px))/2 + 36px)}}@media (max-width: 700px){.adev-home[_ngcontent-ng-c1359865457] .adev-editor-scroll-container[_ngcontent-ng-c1359865457] .adev-sticky-editor[_ngcontent-ng-c1359865457]{top:calc((100vh - (100vh - 110px))/2 + 25px)}}.adev-home[_ngcontent-ng-c1359865457] .adev-editor-scroll-container[_ngcontent-ng-c1359865457] img[_ngcontent-ng-c1359865457]{margin:0 auto;display:flex;justify-content:center;align-items:center;height:auto;min-height:60vh;width:75vw}.adev-home.adev-header[_ngcontent-ng-c1359865457] .adev-cta[_ngcontent-ng-c1359865457], .adev-home.adev-header[_ngcontent-ng-c1359865457] .adev-arrow[_ngcontent-ng-c1359865457]{opacity:1;visibility:visible}.adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-logo[_ngcontent-ng-c1359865457], .adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-scale[_ngcontent-ng-c1359865457], .adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-lines[_ngcontent-ng-c1359865457]{height:200vh}@supports (height: 100lvh){.adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-logo[_ngcontent-ng-c1359865457], .adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-scale[_ngcontent-ng-c1359865457], .adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-lines[_ngcontent-ng-c1359865457]{height:200lvh}}.adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-logo-wordmark[_ngcontent-ng-c1359865457], .adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-scale-text[_ngcontent-ng-c1359865457], .adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-lines-text[_ngcontent-ng-c1359865457], .adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-build-text[_ngcontent-ng-c1359865457]{position:fixed}.adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-scale-text[_ngcontent-ng-c1359865457], .adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-lines-text[_ngcontent-ng-c1359865457], .adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-build-text[_ngcontent-ng-c1359865457]{opacity:0}.adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-build[_ngcontent-ng-c1359865457]{height:300vh}@supports (height: 100lvh){.adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-build[_ngcontent-ng-c1359865457]{height:300lvh}}.adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-build-text[_ngcontent-ng-c1359865457] h2[_ngcontent-ng-c1359865457]{opacity:0}.adev-home.adev-webgl[_ngcontent-ng-c1359865457] .adev-build-webgl-text[_ngcontent-ng-c1359865457]{display:flex}.adev-home.adev-webgl.adev-loaded[_ngcontent-ng-c1359865457] .adev-canvas[_ngcontent-ng-c1359865457]{opacity:unset}.adev-home.adev-webgl.adev-loaded[_ngcontent-ng-c1359865457] .adev-logo-wordmark[_ngcontent-ng-c1359865457]{opacity:0}.adev-code-editor[_ngcontent-ng-c1359865457]{background-color:var(--page-background);padding-bottom:60px}.adev-code-editor[_ngcontent-ng-c1359865457] embedded-editor{margin:0 auto;display:flex;width:75vw;height:calc(100vh - 110px)}@media (max-width: 700px){.adev-code-editor[_ngcontent-ng-c1359865457] embedded-editor{width:95vw}}.adev-code-editor[_ngcontent-ng-c1359865457] embedded-editor .adev-editor-container{width:100%}.adev-code-editor-gradient[_ngcontent-ng-c1359865457]{position:absolute;left:0;right:0;margin-top:-100vh;height:100vh;background:linear-gradient(to top,var(--page-background),transparent);pointer-events:none}@supports (height: 100svh){.adev-code-editor-gradient[_ngcontent-ng-c1359865457]{margin-top:-100svh;height:100svh}}</style><style ng-app-id="ng">.adev-footer-columns[_ngcontent-ng-c3585373939]{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem}@container footer (max-width: 600px){.adev-footer-columns[_ngcontent-ng-c3585373939]{grid-template-columns:repeat(2,1fr)!important}}.adev-footer-container[_ngcontent-ng-c3585373939]{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-c3585373939]{width:calc(100% - 195px - var(--layout-padding) * 3)}}.adev-footer-container[_ngcontent-ng-c3585373939] h2[_ngcontent-ng-c3585373939]{font-size:.875rem;font-weight:600;margin-block-end:1.75rem;letter-spacing:-.00875rem}.adev-footer-container[_ngcontent-ng-c3585373939] ul[_ngcontent-ng-c3585373939]{list-style:none;padding:0;display:flex;flex-direction:column;gap:.95rem}.adev-footer-container[_ngcontent-ng-c3585373939] ul[_ngcontent-ng-c3585373939] li[_ngcontent-ng-c3585373939]{font-size:.8125rem}.adev-footer-container[_ngcontent-ng-c3585373939] a[_ngcontent-ng-c3585373939]{color:var(--quaternary-contrast);font-weight:300;transition:color .3s ease}.adev-footer-container[_ngcontent-ng-c3585373939] a[_ngcontent-ng-c3585373939]:hover{color:var(--primary-contrast)}.adev-footer-container[_ngcontent-ng-c3585373939] p.docs-license[_ngcontent-ng-c3585373939]{transition:color .3s ease;color:var(--quaternary-contrast);font-weight:300;grid-column:span 4;font-size:.75rem;margin-block-start:2rem}</style></head> <body class="mat-typography docs-scroll-track-transparent-large"><!--nghm--> <adev-root _nghost-ng-c3997628623 ng-version="19.0.0" ngh="3" ng-server-context="ssg"><!----><!----><button _ngcontent-ng-c3997628623 class="adev-skip">Skip to main content</button><div _ngcontent-ng-c3997628623 class="adev-nav" _nghost-ng-c249881476 ngh="1"><div _ngcontent-ng-c249881476 id="primaryNav"><div _ngcontent-ng-c249881476 class="adev-mobile-nav-bar"><button _ngcontent-ng-c249881476 type="button" aria-label="Toggle mobile navigation" class="adev-mobile-nav-button"><svg _ngcontent-ng-c249881476="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 223 236" width="32"><g _ngcontent-ng-c249881476="" clip-path="url(#2a)"><path _ngcontent-ng-c249881476="" 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-c249881476="" 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-c249881476=""><linearGradient _ngcontent-ng-c249881476="" id="2b" x1="49.009" x2="225.829" y1="213.75" y2="129.722" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c249881476="" stop-color="#E40035"/><stop _ngcontent-ng-c249881476="" offset=".24" stop-color="#F60A48"/><stop _ngcontent-ng-c249881476="" offset=".352" stop-color="#F20755"/><stop _ngcontent-ng-c249881476="" offset=".494" stop-color="#DC087D"/><stop _ngcontent-ng-c249881476="" offset=".745" stop-color="#9717E7"/><stop _ngcontent-ng-c249881476="" offset="1" stop-color="#6C00F5"/></linearGradient><linearGradient _ngcontent-ng-c249881476="" id="2c" x1="41.025" x2="156.741" y1="28.344" y2="160.344" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c249881476="" stop-color="#FF31D9"/><stop _ngcontent-ng-c249881476="" offset="1" stop-color="#FF5BE1" stop-opacity="0"/></linearGradient><clipPath _ngcontent-ng-c249881476="" id="2a"><path _ngcontent-ng-c249881476="" fill="#fff" d="M0 0h223v236H0z"/></clipPath></defs></svg><docs-icon _ngcontent-ng-c249881476 aria-hidden="true" translate="no" role="presentation" _nghost-ng-c1974536348 class="material-symbols-outlined" style="font-size: 0px;" ngh="0">menu</docs-icon></button></div><nav _ngcontent-ng-c249881476 class="adev-nav-primary docs-scroll-hide"><button _ngcontent-ng-c249881476 type="button" aria-label="Close navigation" class="adev-close-nav"><docs-icon _ngcontent-ng-c249881476 aria-hidden="true" translate="no" role="presentation" _nghost-ng-c1974536348 class="material-symbols-outlined" style="font-size: 0px;" ngh="0">close</docs-icon></button><ul _ngcontent-ng-c249881476 class="adev-nav__top"><li _ngcontent-ng-c249881476 class="adev-nav-item adev-nav-item--logo adev-nav-item--active"><a _ngcontent-ng-c249881476 aria-label="Angular homepage" routerlink="/" href="/"><svg _ngcontent-ng-c249881476="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 223 236" width="32" class="angular-logo"><g _ngcontent-ng-c249881476="" clip-path="url(#a)"><path _ngcontent-ng-c249881476="" 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-c249881476="" 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-c249881476=""><linearGradient _ngcontent-ng-c249881476="" id="b" x1="49.009" x2="225.829" y1="213.75" y2="129.722" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c249881476="" stop-color="#E40035"/><stop _ngcontent-ng-c249881476="" offset=".24" stop-color="#F60A48"/><stop _ngcontent-ng-c249881476="" offset=".352" stop-color="#F20755"/><stop _ngcontent-ng-c249881476="" offset=".494" stop-color="#DC087D"/><stop _ngcontent-ng-c249881476="" offset=".745" stop-color="#9717E7"/><stop _ngcontent-ng-c249881476="" offset="1" stop-color="#6C00F5"/></linearGradient><linearGradient _ngcontent-ng-c249881476="" id="c" x1="41.025" x2="156.741" y1="28.344" y2="160.344" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c249881476="" stop-color="#FF31D9"/><stop _ngcontent-ng-c249881476="" offset="1" stop-color="#FF5BE1" stop-opacity="0"/></linearGradient><clipPath _ngcontent-ng-c249881476="" id="a"><path _ngcontent-ng-c249881476="" fill="#fff" d="M0 0h223v236H0z"/></clipPath></defs></svg><!----><!----></a><div _ngcontent-ng-c249881476 class="adev-nav-item"><button _ngcontent-ng-c249881476 type="button" aria-label="Select Angular version" role="button" class="cdk-menu-trigger adev-version-button" data-cdk-menu-stack-id="cdk-menu-stack-3" aria-haspopup="menu" aria-expanded="false"> v19 <svg _ngcontent-ng-c249881476="" xmlns="http://www.w3.org/2000/svg" height="15" viewBox="0 -960 960 960" width="15" fill="inherit"><path _ngcontent-ng-c249881476="" d="M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z"/></svg></button><!----><!----></div></li><li _ngcontent-ng-c249881476 class="adev-nav-item"><button _ngcontent-ng-c249881476 type="button" title="Search docs" class="adev-nav-button"><svg _ngcontent-ng-c249881476="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="inherit"><path _ngcontent-ng-c249881476="" 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-c249881476 class="adev-nav-item__label adev-search-desktop" aria-label="Open search dialog with "><kbd _ngcontent-ng-c249881476><!--ngetn--></kbd><kbd _ngcontent-ng-c249881476>K</kbd></span></button></li><li _ngcontent-ng-c249881476 class="adev-nav-item"><a _ngcontent-ng-c249881476 href="/docs"><svg _ngcontent-ng-c249881476="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="14" height="18" fill="inherit"><path _ngcontent-ng-c249881476="" 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-c249881476 class="adev-nav-item__label">Docs</span></a></li><li _ngcontent-ng-c249881476 class="adev-nav-item"><a _ngcontent-ng-c249881476 href="/tutorials"><svg _ngcontent-ng-c249881476="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="18" height="10" fill="inherit"><path _ngcontent-ng-c249881476="" 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-c249881476 class="adev-nav-item__label">Tutorials</span></a></li><li _ngcontent-ng-c249881476 class="adev-nav-item"><a _ngcontent-ng-c249881476 href="/playground"><svg _ngcontent-ng-c249881476="" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path _ngcontent-ng-c249881476="" 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-c249881476 class="adev-nav-item__label">Playground</span></a></li><li _ngcontent-ng-c249881476 class="adev-nav-item"><a _ngcontent-ng-c249881476 href="/reference"><svg _ngcontent-ng-c249881476="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="14" height="18" fill="inherit"><path _ngcontent-ng-c249881476="" 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-c249881476 class="adev-nav-item__label">Reference</span></a></li></ul><div _ngcontent-ng-c249881476 class="adev-nav__bottom"><div _ngcontent-ng-c249881476 class="adev-nav-item"><button _ngcontent-ng-c249881476 type="button" aria-label="Open social media links" class="cdk-menu-trigger" role="button" data-cdk-menu-stack-id="cdk-menu-stack-4" aria-haspopup="menu" aria-expanded="false"><docs-icon _ngcontent-ng-c249881476 aria-hidden="true" translate="no" role="presentation" _nghost-ng-c1974536348 class="material-symbols-outlined" style="font-size: 0px;" ngh="0">more_horiz</docs-icon></button><!----><!----></div><div _ngcontent-ng-c249881476 class="adev-nav-item"><button _ngcontent-ng-c249881476 type="button" aria-label="Open theme picker" class="cdk-menu-trigger" role="button" data-cdk-menu-stack-id="cdk-menu-stack-5" aria-haspopup="menu" aria-expanded="false"><docs-icon _ngcontent-ng-c249881476 aria-hidden="true" translate="no" role="presentation" _nghost-ng-c1974536348 class="material-symbols-outlined" style="font-size: 0px;" ngh="0"><!----><!----><!----></docs-icon></button><!----><!----></div></div></nav><!----></div></div><!----><div _ngcontent-ng-c3997628623 class="docs-app-main-content"><!----><!----><router-outlet _ngcontent-ng-c3997628623></router-outlet><adev-home _nghost-ng-c1359865457 ngh="2"><div _ngcontent-ng-c1359865457 class="adev-home"><div _ngcontent-ng-c1359865457 class="adev-top"><div _ngcontent-ng-c1359865457 class="adev-top-content"><a _ngcontent-ng-c1359865457 href="https://blog.angular.dev/meet-angular-v19-7b29dfd05b84" target="_blank" class="adev-banner"><h1 _ngcontent-ng-c1359865457 tabindex="-1">Angular v19 is here!</h1><p _ngcontent-ng-c1359865457 class="adev-banner-cta">Read about our newest release.</p></a></div></div><div _ngcontent-ng-c1359865457 class="adev-canvas"></div><div _ngcontent-ng-c1359865457 class="adev-logo"><div _ngcontent-ng-c1359865457 class="adev-logo-wordmark"><svg _ngcontent-ng-c1359865457="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 982 241" class="angular-logo" style="width: max(calc(700 * min(100vw, 2560px) / 1470), 350px); height: auto;"><g _ngcontent-ng-c1359865457="" clip-path="url(#wordmark_a)"><path _ngcontent-ng-c1359865457="" fill="url(#wordmark_b)" d="M388.676 191.625h30.849L363.31 31.828h-35.758l-56.215 159.797h30.848l13.174-39.356h60.061l13.256 39.356Zm-65.461-62.675 21.602-64.311h1.227l21.603 64.311h-44.432Zm126.831-7.527v70.202h-28.23V71.839h27.002v20.374h1.392c2.782-6.71 7.2-12.028 13.255-15.956 6.056-3.927 13.584-5.89 22.503-5.89 8.264 0 15.465 1.8 21.684 5.318 6.137 3.518 10.964 8.673 14.319 15.382 3.437 6.71 5.074 14.81 4.992 24.383v76.175h-28.23v-71.92c0-8.019-2.046-14.237-6.219-18.819-4.173-4.5-9.819-6.791-17.102-6.791-4.91 0-9.328 1.063-13.174 3.272-3.846 2.128-6.792 5.237-9.001 9.328-2.046 4.009-3.191 8.918-3.191 14.728ZM589.233 239c-10.147 0-18.82-1.391-26.103-4.091-7.282-2.7-13.092-6.382-17.511-10.964-4.418-4.582-7.528-9.655-9.164-15.219l25.448-6.136c1.145 2.372 2.782 4.663 4.991 6.954 2.209 2.291 5.155 4.255 8.837 5.81 3.683 1.554 8.428 2.291 14.074 2.291 8.019 0 14.647-1.964 19.884-5.81 5.237-3.845 7.856-10.227 7.856-19.064v-22.665h-1.391c-1.473 2.946-3.601 5.892-6.383 9.001-2.782 3.109-6.464 5.645-10.965 7.691-4.582 2.046-10.228 3.109-17.101 3.109-9.165 0-17.511-2.209-25.039-6.545-7.446-4.337-13.42-10.883-17.757-19.474-4.418-8.673-6.628-19.473-6.628-32.565 0-13.091 2.21-24.301 6.628-33.383 4.419-9.082 10.311-15.955 17.839-20.7 7.528-4.746 15.874-7.037 25.038-7.037 7.038 0 12.847 1.145 17.348 3.518 4.582 2.373 8.182 5.236 10.883 8.51 2.7 3.272 4.746 6.382 6.137 9.327h1.554v-19.8h27.821v121.749c0 10.228-2.454 18.737-7.364 25.447-4.91 6.709-11.538 11.7-20.048 15.055-8.509 3.355-18.165 4.991-28.884 4.991Zm.245-71.266c5.974 0 11.047-1.473 15.302-4.337 4.173-2.945 7.446-7.118 9.573-12.519 2.21-5.482 3.274-12.027 3.274-19.637 0-7.609-1.064-14.155-3.274-19.8-2.127-5.646-5.318-10.064-9.491-13.255-4.174-3.11-9.329-4.746-15.384-4.746s-11.537 1.636-15.792 4.91c-4.173 3.272-7.365 7.772-9.492 13.418-2.128 5.727-3.191 12.191-3.191 19.392 0 7.2 1.063 13.746 3.273 19.228 2.127 5.482 5.318 9.736 9.573 12.764 4.174 3.027 9.41 4.582 15.629 4.582Zm141.56-26.51V71.839h28.23v119.786h-27.412v-21.273h-1.227c-2.7 6.709-7.119 12.191-13.338 16.446-6.137 4.255-13.747 6.382-22.748 6.382-7.855 0-14.81-1.718-20.783-5.237-5.974-3.518-10.72-8.591-14.075-15.382-3.355-6.709-5.073-14.891-5.073-24.464V71.839h28.312v71.921c0 7.609 2.046 13.664 6.219 18.083 4.173 4.5 9.655 6.709 16.365 6.709 4.173 0 8.183-.982 12.111-3.028 3.927-2.045 7.118-5.072 9.655-9.082 2.537-4.091 3.764-9.164 3.764-15.218Zm65.707-109.395v159.796h-28.23V31.828h28.23Zm44.841 162.169c-7.61 0-14.402-1.391-20.457-4.091-6.055-2.7-10.883-6.791-14.32-12.109-3.518-5.319-5.237-11.946-5.237-19.801 0-6.791 1.228-12.355 3.765-16.773 2.536-4.419 5.891-7.937 10.228-10.637 4.337-2.619 9.164-4.664 14.647-6.055 5.4-1.391 11.046-2.373 16.856-3.027 7.037-.737 12.683-1.391 17.102-1.964 4.337-.573 7.528-1.555 9.574-2.782 1.963-1.309 3.027-3.273 3.027-5.973v-.491c0-5.891-1.718-10.391-5.237-13.664-3.518-3.191-8.51-4.828-15.056-4.828-6.955 0-12.356 1.473-16.447 4.5-4.01 3.028-6.71 6.546-8.183 10.719l-26.348-3.764c2.046-7.282 5.483-13.336 10.31-18.328 4.746-4.909 10.638-8.59 17.511-11.045 6.955-2.455 14.565-3.682 22.912-3.682 5.809 0 11.537.654 17.265 2.045s10.965 3.6 15.711 6.71c4.746 3.109 8.51 7.282 11.455 12.6 2.864 5.318 4.337 11.946 4.337 19.883v80.184h-27.166v-16.446h-.9c-1.719 3.355-4.091 6.464-7.201 9.328-3.109 2.864-6.955 5.237-11.619 6.955-4.828 1.718-10.229 2.536-16.529 2.536Zm7.364-20.701c5.646 0 10.556-1.145 14.729-3.354 4.173-2.291 7.364-5.237 9.655-9.001 2.292-3.763 3.355-7.854 3.355-12.273v-14.155c-.9.737-2.373 1.391-4.5 2.046-2.128.654-4.419 1.145-7.037 1.636-2.619.491-5.155.9-7.692 1.227-2.537.328-4.746.655-6.628.901-4.173.572-8.019 1.472-11.292 2.781-3.355 1.31-5.973 3.11-7.855 5.401-1.964 2.291-2.864 5.318-2.864 8.918 0 5.237 1.882 9.164 5.728 11.782 3.682 2.782 8.51 4.091 14.401 4.091Zm64.643 18.328V71.839h27.412v19.965h1.227c2.21-6.955 5.974-12.274 11.292-16.038 5.319-3.763 11.456-5.645 18.329-5.645 1.555 0 3.355.082 5.237.163 1.964.164 3.601.328 4.91.573v25.938c-1.227-.41-3.109-.819-5.646-1.146a58.815 58.815 0 0 0-7.446-.49c-5.155 0-9.738 1.145-13.829 3.354-4.091 2.209-7.282 5.236-9.655 9.164-2.373 3.927-3.519 8.427-3.519 13.5v70.448h-28.312ZM222.077 39.192l-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-c1359865457="" fill="url(#wordmark_c)" d="M388.676 191.625h30.849L363.31 31.828h-35.758l-56.215 159.797h30.848l13.174-39.356h60.061l13.256 39.356Zm-65.461-62.675 21.602-64.311h1.227l21.603 64.311h-44.432Zm126.831-7.527v70.202h-28.23V71.839h27.002v20.374h1.392c2.782-6.71 7.2-12.028 13.255-15.956 6.056-3.927 13.584-5.89 22.503-5.89 8.264 0 15.465 1.8 21.684 5.318 6.137 3.518 10.964 8.673 14.319 15.382 3.437 6.71 5.074 14.81 4.992 24.383v76.175h-28.23v-71.92c0-8.019-2.046-14.237-6.219-18.819-4.173-4.5-9.819-6.791-17.102-6.791-4.91 0-9.328 1.063-13.174 3.272-3.846 2.128-6.792 5.237-9.001 9.328-2.046 4.009-3.191 8.918-3.191 14.728ZM589.233 239c-10.147 0-18.82-1.391-26.103-4.091-7.282-2.7-13.092-6.382-17.511-10.964-4.418-4.582-7.528-9.655-9.164-15.219l25.448-6.136c1.145 2.372 2.782 4.663 4.991 6.954 2.209 2.291 5.155 4.255 8.837 5.81 3.683 1.554 8.428 2.291 14.074 2.291 8.019 0 14.647-1.964 19.884-5.81 5.237-3.845 7.856-10.227 7.856-19.064v-22.665h-1.391c-1.473 2.946-3.601 5.892-6.383 9.001-2.782 3.109-6.464 5.645-10.965 7.691-4.582 2.046-10.228 3.109-17.101 3.109-9.165 0-17.511-2.209-25.039-6.545-7.446-4.337-13.42-10.883-17.757-19.474-4.418-8.673-6.628-19.473-6.628-32.565 0-13.091 2.21-24.301 6.628-33.383 4.419-9.082 10.311-15.955 17.839-20.7 7.528-4.746 15.874-7.037 25.038-7.037 7.038 0 12.847 1.145 17.348 3.518 4.582 2.373 8.182 5.236 10.883 8.51 2.7 3.272 4.746 6.382 6.137 9.327h1.554v-19.8h27.821v121.749c0 10.228-2.454 18.737-7.364 25.447-4.91 6.709-11.538 11.7-20.048 15.055-8.509 3.355-18.165 4.991-28.884 4.991Zm.245-71.266c5.974 0 11.047-1.473 15.302-4.337 4.173-2.945 7.446-7.118 9.573-12.519 2.21-5.482 3.274-12.027 3.274-19.637 0-7.609-1.064-14.155-3.274-19.8-2.127-5.646-5.318-10.064-9.491-13.255-4.174-3.11-9.329-4.746-15.384-4.746s-11.537 1.636-15.792 4.91c-4.173 3.272-7.365 7.772-9.492 13.418-2.128 5.727-3.191 12.191-3.191 19.392 0 7.2 1.063 13.746 3.273 19.228 2.127 5.482 5.318 9.736 9.573 12.764 4.174 3.027 9.41 4.582 15.629 4.582Zm141.56-26.51V71.839h28.23v119.786h-27.412v-21.273h-1.227c-2.7 6.709-7.119 12.191-13.338 16.446-6.137 4.255-13.747 6.382-22.748 6.382-7.855 0-14.81-1.718-20.783-5.237-5.974-3.518-10.72-8.591-14.075-15.382-3.355-6.709-5.073-14.891-5.073-24.464V71.839h28.312v71.921c0 7.609 2.046 13.664 6.219 18.083 4.173 4.5 9.655 6.709 16.365 6.709 4.173 0 8.183-.982 12.111-3.028 3.927-2.045 7.118-5.072 9.655-9.082 2.537-4.091 3.764-9.164 3.764-15.218Zm65.707-109.395v159.796h-28.23V31.828h28.23Zm44.841 162.169c-7.61 0-14.402-1.391-20.457-4.091-6.055-2.7-10.883-6.791-14.32-12.109-3.518-5.319-5.237-11.946-5.237-19.801 0-6.791 1.228-12.355 3.765-16.773 2.536-4.419 5.891-7.937 10.228-10.637 4.337-2.619 9.164-4.664 14.647-6.055 5.4-1.391 11.046-2.373 16.856-3.027 7.037-.737 12.683-1.391 17.102-1.964 4.337-.573 7.528-1.555 9.574-2.782 1.963-1.309 3.027-3.273 3.027-5.973v-.491c0-5.891-1.718-10.391-5.237-13.664-3.518-3.191-8.51-4.828-15.056-4.828-6.955 0-12.356 1.473-16.447 4.5-4.01 3.028-6.71 6.546-8.183 10.719l-26.348-3.764c2.046-7.282 5.483-13.336 10.31-18.328 4.746-4.909 10.638-8.59 17.511-11.045 6.955-2.455 14.565-3.682 22.912-3.682 5.809 0 11.537.654 17.265 2.045s10.965 3.6 15.711 6.71c4.746 3.109 8.51 7.282 11.455 12.6 2.864 5.318 4.337 11.946 4.337 19.883v80.184h-27.166v-16.446h-.9c-1.719 3.355-4.091 6.464-7.201 9.328-3.109 2.864-6.955 5.237-11.619 6.955-4.828 1.718-10.229 2.536-16.529 2.536Zm7.364-20.701c5.646 0 10.556-1.145 14.729-3.354 4.173-2.291 7.364-5.237 9.655-9.001 2.292-3.763 3.355-7.854 3.355-12.273v-14.155c-.9.737-2.373 1.391-4.5 2.046-2.128.654-4.419 1.145-7.037 1.636-2.619.491-5.155.9-7.692 1.227-2.537.328-4.746.655-6.628.901-4.173.572-8.019 1.472-11.292 2.781-3.355 1.31-5.973 3.11-7.855 5.401-1.964 2.291-2.864 5.318-2.864 8.918 0 5.237 1.882 9.164 5.728 11.782 3.682 2.782 8.51 4.091 14.401 4.091Zm64.643 18.328V71.839h27.412v19.965h1.227c2.21-6.955 5.974-12.274 11.292-16.038 5.319-3.763 11.456-5.645 18.329-5.645 1.555 0 3.355.082 5.237.163 1.964.164 3.601.328 4.91.573v25.938c-1.227-.41-3.109-.819-5.646-1.146a58.815 58.815 0 0 0-7.446-.49c-5.155 0-9.738 1.145-13.829 3.354-4.091 2.209-7.282 5.236-9.655 9.164-2.373 3.927-3.519 8.427-3.519 13.5v70.448h-28.312ZM222.077 39.192l-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-c1359865457=""><radialGradient _ngcontent-ng-c1359865457="" id="wordmark_c" cx="0" cy="0" r="1" gradientTransform="rotate(118.122 171.182 60.81) scale(205.794)" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c1359865457="" stop-color="#FF41F8"/><stop _ngcontent-ng-c1359865457="" offset=".707" stop-color="#FF41F8" stop-opacity=".5"/><stop _ngcontent-ng-c1359865457="" offset="1" stop-color="#FF41F8" stop-opacity="0"/></radialGradient><linearGradient _ngcontent-ng-c1359865457="" id="wordmark_b" x1="0" x2="982" y1="192" y2="192" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c1359865457="" stop-color="#F0060B"/><stop _ngcontent-ng-c1359865457="" offset="0" stop-color="#F0070C"/><stop _ngcontent-ng-c1359865457="" offset=".526" stop-color="#CC26D5"/><stop _ngcontent-ng-c1359865457="" offset="1" stop-color="#7702FF"/></linearGradient><clipPath _ngcontent-ng-c1359865457="" id="wordmark_a"><path _ngcontent-ng-c1359865457="" fill="#fff" d="M0 0h982v239H0z"/></clipPath></defs></svg><!----><!----></div></div><div _ngcontent-ng-c1359865457 class="adev-scale"><div _ngcontent-ng-c1359865457 class="adev-scale-text"><div _ngcontent-ng-c1359865457 class="adev-scale-container"><div _ngcontent-ng-c1359865457 class="adev-scale-wrapper"><h2 _ngcontent-ng-c1359865457>Works at any scale</h2><p _ngcontent-ng-c1359865457> Angular lets you start small on a well-lit path and supports you as your team and apps grow. </p></div></div></div></div><div _ngcontent-ng-c1359865457 class="adev-lines"><div _ngcontent-ng-c1359865457 class="adev-lines-text"><div _ngcontent-ng-c1359865457 class="adev-lines-container"><div _ngcontent-ng-c1359865457 class="adev-lines-wrapper"><h2 _ngcontent-ng-c1359865457>Loved by millions</h2><p _ngcontent-ng-c1359865457> Join the millions of developers all over the world building with Angular in a thriving and friendly community. </p></div></div></div></div><div _ngcontent-ng-c1359865457 class="adev-build"><div _ngcontent-ng-c1359865457 class="adev-build-text"><div _ngcontent-ng-c1359865457 class="adev-build-container"><div _ngcontent-ng-c1359865457 class="adev-build-wrapper"><h2 _ngcontent-ng-c1359865457> Build for everyone <div _ngcontent-ng-c1359865457 aria-hidden="true" class="adev-gradient">Build for everyone</div></h2><p _ngcontent-ng-c1359865457> Rely on Angular's built-in hydration, internationalization, security, and accessibility support to build for everyone around the world. </p></div></div></div><div _ngcontent-ng-c1359865457 aria-hidden="true" class="adev-build-webgl-text"><div _ngcontent-ng-c1359865457 class="adev-build-container"><div _ngcontent-ng-c1359865457 class="adev-build-wrapper"><h2 _ngcontent-ng-c1359865457>Build for everyone</h2><p _ngcontent-ng-c1359865457> Rely on Angular's built-in hydration, internationalization, security, and accessibility support to build for everyone around the world. </p></div></div></div></div><div _ngcontent-ng-c1359865457 class="adev-code-editor-gradient"></div><div _ngcontent-ng-c1359865457 class="adev-editor-scroll-container"><div _ngcontent-ng-c1359865457 class="adev-code-editor adev-sticky-editor"><!----><!----><!----></div></div><div _ngcontent-ng-c1359865457 class="adev-arrow"></div><a _ngcontent-ng-c1359865457 class="adev-cta" href="/tutorials/learn-angular"><button _ngcontent-ng-c1359865457 aria-label="Learn Angular" class="docs-primary-btn" text="Learn Angular"> Learn Angular </button></a></div></adev-home><!----><footer _ngcontent-ng-c3997628623 adev-footer _nghost-ng-c3585373939 ngh="0"><div _ngcontent-ng-c3585373939 class="adev-footer-container"><div _ngcontent-ng-c3585373939 class="adev-footer-columns"><div _ngcontent-ng-c3585373939><h2 _ngcontent-ng-c3585373939>Social Media</h2><ul _ngcontent-ng-c3585373939><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 title="Angular blog" href="https://blog.angular.dev">Blog</a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 title="X (formerly Twitter)" href="https://x.com/angular">X (formerly Twitter)</a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 title="YouTube" href="https://www.youtube.com/angular">YouTube</a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 href="https://discord.gg/angular" title="Join the discussions at Angular Community Discord server."> Discord </a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 title="GitHub" href="https://github.com/angular/angular">GitHub</a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 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-c3585373939><h2 _ngcontent-ng-c3585373939>Community</h2><ul _ngcontent-ng-c3585373939><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 href="https://github.com/angular/angular/blob/main/CONTRIBUTING.md" title="Contribute to Angular"> Contribute </a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 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-c3585373939><a _ngcontent-ng-c3585373939 href="https://github.com/angular/angular/issues" title="Post issues and suggestions on github."> Report Issues </a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 href="https://devlibrary.withgoogle.com/products/angular?sort=updated" title="Google's DevLibrary"> Google's DevLibrary </a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 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-c3585373939><h2 _ngcontent-ng-c3585373939>Resources</h2><ul _ngcontent-ng-c3585373939><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 routerlink="/press-kit" title="Press contacts, logos, and branding." href="/press-kit">Press Kit</a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 routerlink="/roadmap" title="Roadmap" href="/roadmap">Roadmap</a></li></ul></div><div _ngcontent-ng-c3585373939><h2 _ngcontent-ng-c3585373939>Languages</h2><ul _ngcontent-ng-c3585373939><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 href="https://angular.cn/" title="简体中文版">简体中文版</a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 href="https://angular.tw/" title="正體中文版">正體中文版</a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 href="https://angular.jp/" title="日本語版">日本語版</a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 href="https://angular.kr/" title="한국어">한국어</a></li><li _ngcontent-ng-c3585373939><a _ngcontent-ng-c3585373939 href="https://angular-gr.web.app" title="Ελληνικά"> Ελληνικά </a></li></ul></div></div><p _ngcontent-ng-c3585373939 class="docs-license"> Super-powered by Google ©2010-2024. Code licensed under an <a _ngcontent-ng-c3585373939 routerlink="/license" title="License text" href="/license">MIT-style License</a> . Documentation licensed under <a _ngcontent-ng-c3585373939 href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a> . </p></div></footer><!----></div></adev-root> <script src="main-HH3J54UO.js" type="module"></script> <div class="cdk-live-announcer-element cdk-visually-hidden" aria-atomic="true" aria-live="polite" id="cdk-live-announcer-1"></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","52":"t16","53":"t17","54":"t18"},"c":{"12":[{"i":"t14","r":1}],"13":[],"52":[],"53":[],"54":[]}},{"t":{"0":"t0","1":"t1","6":"t11","8":"t12","9":"t13","12":"t19"},"c":{"0":[],"1":[],"6":[],"8":[],"9":[],"11":[{"i":"c1359865457","r":1}],"12":[{"i":"t19","r":1}]}}]}</script></body></html>