CINXE.COM
Angular CLI • Overview • 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>Angular CLI • Overview • 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/tools/cli"> <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,h3{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)}.docs-scroll-track-transparent::-webkit-scrollbar-track{background:#0000;cursor:pointer}.docs-scroll-track-transparent::-webkit-scrollbar{width:6px;height:6px}.docs-scroll-track-transparent::-webkit-scrollbar-thumb{background-color:var(--senary-contrast);border-radius:10px;transition:background-color .3s ease}.docs-scroll-track-transparent::-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;}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}}.docs-faceted-list{--faceted-list-border-width: 2px;list-style:none;padding:0;margin:0;border-inline-start:calc(var(--faceted-list-border-width) - 1px) solid var(--senary-contrast)}.docs-faceted-list-item a,.docs-faceted-list-item button:not(.docs-expanded-button){position:relative;background-color:var(--quaternary-contrast);background-clip:text;-webkit-background-clip:text;color:transparent;transition:background-color .3s ease;line-height:1.1rem}.docs-faceted-list-item a:before,.docs-faceted-list-item button:not(.docs-expanded-button):before{content:"";position:absolute;top:0;left:calc(var(--faceted-list-border-width) * -1);width:var(--faceted-list-border-width);height:100%;background:var(--primary-contrast);opacity:0;transform:scaleY(.7);transition:transform .3s ease,opacity .3s ease}.docs-faceted-list-item a:hover,.docs-faceted-list-item button:not(.docs-expanded-button):hover{background-color:var(--primary-contrast)}.docs-faceted-list-item a:hover:before,.docs-faceted-list-item button:not(.docs-expanded-button):hover:before{opacity:.3}.docs-faceted-list-item a.docs-faceted-list-item-active,.docs-faceted-list-item button:not(.docs-expanded-button).docs-faceted-list-item-active{background-image:var(--pink-to-purple-vertical-gradient)}.docs-faceted-list-item a.docs-faceted-list-item-active:before,.docs-faceted-list-item button:not(.docs-expanded-button).docs-faceted-list-item-active:before{opacity:1;transform:scaleY(1);background:var(--pink-to-purple-vertical-gradient)}.docs-faceted-list-item a.docs-faceted-list-item-active:hover:before,.docs-faceted-list-item button:not(.docs-expanded-button).docs-faceted-list-item-active:hover:before{opacity:1;transform:scaleY(1.1)}.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}.docs-callout{--callout-theme: var(--purple-to-blue-horizontal-gradient);border-width:0;border-block-start-width:2px;border-block-end-width:1px;border-style:solid;margin-block:1.5rem;border-image:var(--callout-theme) 1;position:relative}.docs-callout:has(+.docs-callout){border-block-end-width:0}.docs-callout:before{font-family:var(--icons);position:absolute;right:0;margin-top:1.35rem;color:var(--alert-accent);font-size:1.3rem}.docs-callout h3{background-image:var(--callout-theme);background-clip:text;-webkit-background-clip:text;color:transparent;max-width:fit-content}.docs-viewer .docs-callout h3{font-size:.875rem;margin-block:1.6rem}.docs-callout-helpful{--callout-theme: var(--purple-to-blue-horizontal-gradient)}.docs-callout-helpful:before{content:"check_circle";color:var(--bright-blue)}.docs-card-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:1.25rem;margin-block:1rem}@container docs-content (max-width: 450px){.docs-card-grid{grid-template-columns:1fr}}.docs-card{display:flex;flex-direction:column;justify-content:space-between;color:var(--primary-contrast);padding:1.5rem;border:1px solid var(--senary-contrast);border-radius:.25rem;overflow:hidden;transition:border-color .3s ease,background-color .3s ease}.docs-card p:first-of-type{margin-block-start:1.5rem}.docs-card p:last-of-type{margin-block-end:1.5rem}.docs-card span{font-size:.875rem;font-weight:500;margin-block:0;position:relative}.docs-card *+*:not(a):not(code):not(span){margin-block:1.5rem}a.docs-card{display:flex;flex-direction:column;justify-content:space-between}a.docs-card span{background:var(--pink-to-highlight-to-purple-to-blue-horizontal-gradient);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:.875rem;margin-block:0;transition:background-position 1.8s ease-out;background-size:200% 100%;background-position:100% 0%;position:relative}a.docs-card:hover{background:var(--subtle-purple)}a.docs-card:hover span{background-position:0% 0%}.docs-viewer .docs-card h3{margin-block-start:0;font-size:1rem}code{font-family:var(--code-font);border-radius:.25rem;font-weight:400;isolation:isolate}code:not(pre *){position:relative;padding:0 .3rem;background:#e62600;background:var(--red-to-orange-horizontal-gradient);background-clip:text;-webkit-background-clip:text;color:transparent;max-width:max-content;width:100%;display:inline-block}code:not(pre *):before{content:"";position:absolute;inset:0;width:100%;height:100%;background:var(--subtle-purple);border-radius:.25rem;z-index:-1}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]{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-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: 700px) 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: 900px){[_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%}.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: 700px) 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-c1846892879]{display:flex;position:sticky;top:0;z-index:var(--z-index-nav)}[_nghost-ng-c1846892879] .adev-mobile-nav-button[_ngcontent-ng-c1846892879]{display:flex;align-items:center;gap:.75rem}@media (min-width: 700px) and (max-width: 900px){[_nghost-ng-c1846892879]:has(.adev-nav-primary--open){z-index:50}}.adev-mobile-nav-bar[_ngcontent-ng-c1846892879]{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-c1846892879]{display:flex}}.adev-mobile-nav-bar[_ngcontent-ng-c1846892879]:has(+.adev-nav-primary--open){transform:translateY(-100%);transition:transform .3s ease-in}.adev-mobile-nav-bar[_ngcontent-ng-c1846892879] docs-icon[_ngcontent-ng-c1846892879]{color:var(--primary-contrast)}.adev-nav-primary[_ngcontent-ng-c1846892879]{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: 775px){.adev-nav-primary[_ngcontent-ng-c1846892879]{border-inline-end:1px solid var(--septenary-contrast)}}@media (max-width: 700px){.adev-nav-primary[_ngcontent-ng-c1846892879]{border-inline-end:1px solid var(--septenary-contrast)}}@media (min-width: 700px) and (max-width: 900px){.adev-nav-primary[_ngcontent-ng-c1846892879]{flex-direction:row;width:100vw;padding-inline:calc(var(--layout-padding) - 1.25rem);height:auto;padding-block:0}}.adev-nav-primary.adev-nav-primary--next[_ngcontent-ng-c1846892879], .adev-nav-primary.adev-nav-primary--rc[_ngcontent-ng-c1846892879]{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-c1846892879]{background-color:color-mix(in srgb,var(--symbolic-gray),transparent 30%)}.adev-nav-primary[_ngcontent-ng-c1846892879] > div[_ngcontent-ng-c1846892879]{display:flex;flex-direction:column;align-items:center;justify-content:center}@media (max-width: 700px){.adev-nav-primary[_ngcontent-ng-c1846892879]{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-c1846892879]{transform:translate(0);transition:transform .3s ease-out .1s}}@media (max-width: 700px) and (prefers-reduced-motion: reduce-motion){.adev-nav-primary[_ngcontent-ng-c1846892879]{transition:none}}.adev-nav__top[_ngcontent-ng-c1846892879]{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-c1846892879]{flex-direction:row}}.adev-nav__top[_ngcontent-ng-c1846892879] .adev-version-button[_ngcontent-ng-c1846892879]{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-c1846892879] .adev-version-button[_ngcontent-ng-c1846892879]:hover{color:var(--primary-contrast)}.adev-nav__top[_ngcontent-ng-c1846892879] .adev-version-button[_ngcontent-ng-c1846892879] docs-icon[_ngcontent-ng-c1846892879]{font-size:inherit;line-height:inherit;transition:transform .2s ease}@media (max-width: 700px){.adev-nav__top[_ngcontent-ng-c1846892879] .adev-version-button.adev-mini-menu-open[_ngcontent-ng-c1846892879]:after{transform:rotate(-90deg)}}@media (min-width: 900px){.adev-nav__top[_ngcontent-ng-c1846892879] .adev-version-button.adev-mini-menu-open[_ngcontent-ng-c1846892879]:after{transform:rotate(-90deg)}}@media (min-width: 700px) and (max-width: 900px){.adev-nav__top[_ngcontent-ng-c1846892879] > li[_ngcontent-ng-c1846892879]:first-of-type{padding-inline-start:1.25rem}.adev-nav__top[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879]{padding-inline:.875rem}}.adev-nav__bottom[_ngcontent-ng-c1846892879]{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-c1846892879]{flex-direction:row!important;margin-inline-end:1.25rem;gap:.75rem}}.adev-nav__bottom[_ngcontent-ng-c1846892879] .adev-nav-item--active[_ngcontent-ng-c1846892879] button[_ngcontent-ng-c1846892879] docs-icon[_ngcontent-ng-c1846892879]{color:var(--primary-contrast)}.adev-nav__bottom[_ngcontent-ng-c1846892879] button[_ngcontent-ng-c1846892879]{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-c1846892879] button[_ngcontent-ng-c1846892879]{padding-inline:.5rem}}.adev-nav__bottom[_ngcontent-ng-c1846892879] button[_ngcontent-ng-c1846892879] docs-icon[_ngcontent-ng-c1846892879]{color:var(--quaternary-contrast);font-size:1.5rem}@media (max-width: 900px){.adev-nav__bottom[_ngcontent-ng-c1846892879] button[_ngcontent-ng-c1846892879] docs-icon[_ngcontent-ng-c1846892879]{font-size:1.25rem}}.adev-nav__bottom[_ngcontent-ng-c1846892879] button[_ngcontent-ng-c1846892879]:hover docs-icon[_ngcontent-ng-c1846892879]{color:var(--primary-contrast)}.adev-nav-item--logo[_ngcontent-ng-c1846892879] a[_ngcontent-ng-c1846892879]{height:34px}@media (min-width: 700px) and (max-width: 900px){.adev-nav-item--logo[_ngcontent-ng-c1846892879]{gap:.75rem}}.adev-close-nav[_ngcontent-ng-c1846892879]{display:none;color:var(--primary-contrast)}@media (max-width: 700px){.adev-close-nav[_ngcontent-ng-c1846892879]{display:block}}.adev-search-desktop[_ngcontent-ng-c1846892879]{height:1.375rem;text-transform:capitalize}@media (max-width: 900px){.adev-search-desktop[_ngcontent-ng-c1846892879]{display:none}}.adev-sub-navigation-hidden[_ngcontent-ng-c1846892879]{display:none}.adev-secondary-tablet-bar[_ngcontent-ng-c1846892879]{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-c1846892879] button[_ngcontent-ng-c1846892879]{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-c1846892879]{display:none}}@media (max-width: 700px){.adev-secondary-tablet-bar[_ngcontent-ng-c1846892879]{display:none}}</style><style ng-app-id="ng">.adev-mini-menu[_ngcontent-ng-c1846892879]{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-c1846892879]{top:75px;left:5px}}.adev-mini-menu[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879]{list-style:none}.adev-mini-menu[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879] button[_ngcontent-ng-c1846892879]{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-c1846892879] li[_ngcontent-ng-c1846892879] button[_ngcontent-ng-c1846892879] docs-icon[_ngcontent-ng-c1846892879]{font-size:1.5rem;color:var(--quaternary-contrast);transition:color .3s ease}.adev-mini-menu[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879] button[_ngcontent-ng-c1846892879]:hover{background-color:var(--senary-contrast)}.adev-mini-menu[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879] button[_ngcontent-ng-c1846892879]:hover span[_ngcontent-ng-c1846892879], .adev-mini-menu[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879] button[_ngcontent-ng-c1846892879]:hover docs-icon[_ngcontent-ng-c1846892879]{color:var(--primary-contrast)}.adev-mini-menu[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879] a[_ngcontent-ng-c1846892879]{display:flex;justify-content:center;align-items:center;padding:1rem;min-width:50px}.adev-mini-menu[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879] a[_ngcontent-ng-c1846892879] svg[_ngcontent-ng-c1846892879]{fill:var(--quaternary-contrast);transition:fill .3s ease}.adev-mini-menu[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879] a[_ngcontent-ng-c1846892879]:hover{background-color:var(--senary-contrast)}.adev-mini-menu[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879] a[_ngcontent-ng-c1846892879]:hover svg[_ngcontent-ng-c1846892879]{fill:var(--primary-contrast)}.adev-mini-menu[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879] span[_ngcontent-ng-c1846892879]{color:var(--quaternary-contrast);transition:color .3s ease}.adev-mini-menu-open[_ngcontent-ng-c1846892879]{display:block}.adev-version-picker[_ngcontent-ng-c1846892879]{overflow-y:auto;max-height:90vh;top:30px;left:10px;position:absolute;bottom:auto}.adev-version-picker[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879]{padding-inline:0}.adev-version-picker[_ngcontent-ng-c1846892879] li[_ngcontent-ng-c1846892879] a[_ngcontent-ng-c1846892879]{line-height:1em}@media (min-width: 700px) and (max-width: 900px){.adev-version-picker[_ngcontent-ng-c1846892879]{top:30px;left:auto;bottom:auto}}</style><style ng-app-id="ng">.adev-nav-item[_ngcontent-ng-c1846892879]{color:var(--quaternary-contrast);position:relative;width:6.875rem}@media (max-width: 700px){.adev-nav-item[_ngcontent-ng-c1846892879]{width:5.05rem}}@media (min-width: 700px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c1846892879]{display:flex;align-items:center;justify-content:center;width:auto}}.adev-nav-item[_ngcontent-ng-c1846892879]: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-c1846892879]:before{width:auto;top:auto;right:0;height:2px}}@media (min-width: 700px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c1846892879]:not(.adev-nav-item--logo) a[_ngcontent-ng-c1846892879], .adev-nav-item[_ngcontent-ng-c1846892879]:not(.adev-nav-item--logo) .adev-nav-button[_ngcontent-ng-c1846892879]{gap:.25rem}}.adev-nav-item[_ngcontent-ng-c1846892879] .adev-nav-button[_ngcontent-ng-c1846892879]{width:100%;font-weight:500}.adev-nav-item[_ngcontent-ng-c1846892879] a[_ngcontent-ng-c1846892879], .adev-nav-item[_ngcontent-ng-c1846892879] .adev-nav-button[_ngcontent-ng-c1846892879]{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-c1846892879] a[_ngcontent-ng-c1846892879], .adev-nav-item[_ngcontent-ng-c1846892879] .adev-nav-button[_ngcontent-ng-c1846892879]{flex-direction:row}}.adev-nav-item__label[_ngcontent-ng-c1846892879]{margin:0;font-size:.813;color:inherit}.adev-nav-item__label[_ngcontent-ng-c1846892879] abbr[_ngcontent-ng-c1846892879]{font-size:.688}.adev-nav-item[_ngcontent-ng-c1846892879] i[_ngcontent-ng-c1846892879]{color:var(--quaternary-contrast);transition:color .3s ease}.adev-nav-item[_ngcontent-ng-c1846892879] span[_ngcontent-ng-c1846892879], .adev-nav-item[_ngcontent-ng-c1846892879] abbr[_ngcontent-ng-c1846892879]{transition:color .3s ease}.adev-nav-item[_ngcontent-ng-c1846892879]:hover a[_ngcontent-ng-c1846892879], .adev-nav-item[_ngcontent-ng-c1846892879]:hover .adev-nav-button[_ngcontent-ng-c1846892879]{fill:var(--primary-contrast)}.adev-nav-item[_ngcontent-ng-c1846892879]:hover span[_ngcontent-ng-c1846892879], .adev-nav-item[_ngcontent-ng-c1846892879]:hover abbr[_ngcontent-ng-c1846892879], .adev-nav-item[_ngcontent-ng-c1846892879]:hover i[_ngcontent-ng-c1846892879]{color:var(--primary-contrast)}.adev-nav-item--active[_ngcontent-ng-c1846892879]:before{opacity:1;transform:scaleY(1)}.adev-nav-item--active[_ngcontent-ng-c1846892879]:not(.adev-nav-item--logo) path[_ngcontent-ng-c1846892879]{fill:var(--primary-contrast)}.adev-nav-item--active[_ngcontent-ng-c1846892879] span[_ngcontent-ng-c1846892879], .adev-nav-item--active[_ngcontent-ng-c1846892879] abbr[_ngcontent-ng-c1846892879], .adev-nav-item--active[_ngcontent-ng-c1846892879] i[_ngcontent-ng-c1846892879]{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">[_nghost-ng-c4220121183] .docs-viewer.docs-animate-content[_ngcontent-ng-c4220121183]{animation:_ngcontent-ng-c4220121183_fade-in .5s}@keyframes _ngcontent-ng-c4220121183_fade-in{0%{opacity:0}to{opacity:1}}</style><style ng-app-id="ng">[_nghost-ng-c3716567088]{z-index:100}@media (min-width: 900px){[_nghost-ng-c3716567088]{position:sticky;top:0}}@media (max-width: 900px){[_nghost-ng-c3716567088]{position:fixed}}@media (max-width: 700px){[_nghost-ng-c3716567088]{transform:translate(0);transition:transform .3s ease}[_nghost-ng-c3716567088]:has(.docs-nav-secondary--open){transform:translate(82px);transition:transform .3s ease-in .3s}}.adev-secondary-nav-mask[_ngcontent-ng-c3716567088]{position:sticky;top:0;overflow-x:hidden;min-width:var(--secondary-nav-width);border-inline-end:1px solid var(--septenary-contrast);background-color:var(--page-background);z-index:var(--z-index-nav);transition:transform .45s ease}@media (max-width: 900px){.adev-secondary-nav-mask[_ngcontent-ng-c3716567088]{position:absolute}}@media (prefers-reduced-motion: no-preference){.adev-secondary-nav-mask[_ngcontent-ng-c3716567088]{transition:transform .45s ease,background-color .3s ease,border-color .3s ease}}@media (max-width: 900px){.adev-secondary-nav-mask[_ngcontent-ng-c3716567088]{transform:translate(-100%)}.adev-secondary-nav-mask.docs-nav-secondary--open[_ngcontent-ng-c3716567088]{transform:translate(0)}}@media (max-width: 700px){.adev-secondary-nav-mask[_ngcontent-ng-c3716567088]{transform:translate(-100%);transition:transform .45s ease-in}.adev-secondary-nav-mask.docs-nav-secondary--open[_ngcontent-ng-c3716567088]{transform:translate(0);transition:transform .45s ease-out .2s}}.docs-nav-secondary[_ngcontent-ng-c3716567088]{display:flex;flex-direction:row;max-width:var(--secondary-nav-width)}</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-c3304066253]{display:flex;min-width:var(--secondary-nav-width);list-style:none;overflow-y:auto;overflow-x:hidden;height:100vh;padding:0;margin:0;padding-block:1.5rem;font-size:.875rem;box-sizing:border-box}[_nghost-ng-c3304066253]::-webkit-scrollbar-track{background:rgba(0,0,0,0);cursor:pointer}[_nghost-ng-c3304066253]::-webkit-scrollbar{width:6px;height:6px}[_nghost-ng-c3304066253]::-webkit-scrollbar-thumb{border-radius:10px;transition:background-color .3s ease;background-color:var(--septenary-contrast)}@media(max-width: 900px){[_nghost-ng-c3304066253]::-webkit-scrollbar-thumb{background-color:var(--quinary-contrast)}}[_nghost-ng-c3304066253]::-webkit-scrollbar-thumb:hover{background-color:var(--quinary-contrast)}.docs-nav-secondary [_nghost-ng-c3304066253]{padding-block:2rem}[_nghost-ng-c3304066253] > .docs-faceted-list[_ngcontent-ng-c3304066253]{border:0}[_nghost-ng-c3304066253] .docs-faceted-list-item-text[_ngcontent-ng-c3304066253]{max-width:calc(100% - 1rem);overflow:hidden;text-overflow:ellipsis}[_nghost-ng-c3304066253] .docs-nav-item-has-icon[_ngcontent-ng-c3304066253]::after{content:"chevron_right";font-size:1.25rem;font-family:var(--icons)}.docs-secondary-nav-header[_ngcontent-ng-c3304066253]{padding-block:1.25rem;font-weight:500}.docs-secondary-nav-button[_ngcontent-ng-c3304066253]{width:15rem;display:flex;justify-content:space-between;align-items:center;border:none;padding-block:1.25rem;padding-inline-start:0;color:var(--primary-contrast);font-size:.875rem;font-family:var(--inter-font);line-height:160%;letter-spacing:-0.00875rem;transition:color .3s ease,background .3s ease;text-align:left}.docs-secondary-nav-button.docs-secondary-nav-button-active[_ngcontent-ng-c3304066253]{background-image:var(--pink-to-purple-vertical-gradient)}.docs-secondary-nav-button.docs-secondary-nav-button-active[_ngcontent-ng-c3304066253]::before{opacity:1;transform:scaleY(1);background:var(--pink-to-purple-vertical-gradient)}.docs-secondary-nav-button.docs-secondary-nav-button-active[_ngcontent-ng-c3304066253]:hover::before{opacity:1;transform:scaleY(1.1)}.docs-expanded-button[_ngcontent-ng-c3304066253]{justify-content:start;gap:.5rem}a[_ngcontent-ng-c3304066253], .docs-not-expanded-button[_ngcontent-ng-c3304066253]{display:flex;justify-content:space-between;align-items:center;font-weight:500;line-height:1.4rem;letter-spacing:-0.00875rem;padding:.5rem;padding-inline-start:1rem;text-align:left}.docs-navigation-list[_ngcontent-ng-c3304066253]{width:15rem}.docs-navigation-list[_ngcontent-ng-c3304066253] li[_ngcontent-ng-c3304066253]:last-of-type ul[_ngcontent-ng-c3304066253]:last-of-type li[_ngcontent-ng-c3304066253]:last-of-type{padding-block-end:1rem}.docs-navigation-list[_ngcontent-ng-c3304066253]:first-child{margin-inline-start:1rem}.docs-external-link[_ngcontent-ng-c3304066253]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:.5rem}.docs-external-link[_ngcontent-ng-c3304066253]::after{content:"open_in_new";font-family:var(--icons);font-size:1.1rem;color:var(--quinary-contrast);transition:color .3s ease;margin-inline-end:.4rem} .API-tooltip .mat-mdc-tooltip-surface{max-width:unset;width:auto;word-break:keep-all;white-space:pre}/*# sourceMappingURL=navigation-list.component.css.map */</style><style ng-app-id="ng">.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}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}</style><style ng-app-id="ng">:host{--translate-y: clamp(5px, 0.25em, 7px)}.docs-viewer{display:flex;flex-direction:column;padding:var(--layout-padding);max-width:var(--page-width);width:100%;box-sizing:border-box}@media only screen and (max-width: 1430px){.docs-viewer{container:docs-content/inline-size}}@media only screen and (min-width: 1430px)and (max-width: 1550px){docs-docs .docs-viewer{width:calc(100% - 195px - var(--layout-padding));max-width:var(--page-width)}}.docs-viewer pre{margin-block:0}.docs-viewer h1 .docs-anchor,.docs-viewer h2 .docs-anchor,.docs-viewer h3 .docs-anchor,.docs-viewer h4 .docs-anchor,.docs-viewer h5 .docs-anchor,.docs-viewer h6 .docs-anchor{margin-block-start:.75rem;display:inline-block;color:inherit}.docs-viewer h1 .docs-anchor::after,.docs-viewer h2 .docs-anchor::after,.docs-viewer h3 .docs-anchor::after,.docs-viewer h4 .docs-anchor::after,.docs-viewer h5 .docs-anchor::after,.docs-viewer h6 .docs-anchor::after{content:"";font-family:"Material Symbols Outlined";opacity:0;margin-left:8px;vertical-align:middle;color:var(--quaternary-contrast);font-size:clamp(18px,1.25em,30px);transition:opacity .3s ease}.docs-viewer h1 .docs-anchor:hover::after,.docs-viewer h2 .docs-anchor:hover::after,.docs-viewer h3 .docs-anchor:hover::after,.docs-viewer h4 .docs-anchor:hover::after,.docs-viewer h5 .docs-anchor:hover::after,.docs-viewer h6 .docs-anchor:hover::after{opacity:1}.docs-viewer h1{font-size:2.5rem;margin-block-end:0}.docs-viewer h2{font-size:2rem;margin-block-end:.5rem}.docs-viewer h3{font-size:1.5rem;margin-block-end:.5rem}.docs-viewer h4{font-size:1.25rem;margin-block-end:.5rem}.docs-viewer h5{font-size:1rem;margin-block-end:0}.docs-viewer h6{font-size:.875rem;margin-block-end:0}.docs-viewer>:last-child{margin-block-end:0}.docs-viewer a:not(.docs-github-links):not(.docs-card):not(.docs-pill):not(.docs-example-github-link)[href^="http:"]::after,.docs-viewer a:not(.docs-github-links):not(.docs-card):not(.docs-pill):not(.docs-example-github-link)[href^="https:"]::after{display:inline-block;content:"";font-family:"Material Symbols Outlined";margin-left:.2rem;vertical-align:middle}.docs-viewer-scroll-margin-large h2,.docs-viewer-scroll-margin-large h3{scroll-margin:5em}.docs-header{margin-block-end:1rem}.docs-header>p:first-child{color:var(--quaternary-contrast);font-weight:500;margin:0}.docs-page-title{display:flex;justify-content:space-between}.docs-page-title h1{margin-block:0;font-size:2.25rem}.docs-page-title a{color:var(--primary-contrast);height:fit-content}.docs-page-title a docs-icon{color:var(--gray-400);transition:color .3s ease}.docs-page-title a:hover docs-icon{color:var(--primary-contrast)}/*# sourceMappingURL=docs-viewer.component.css.map */ </style><style ng-app-id="ng">[_nghost-ng-c3945279308]{display:flex;align-items:center;padding-block-end:1.5rem}.docs-breadcrumb[_ngcontent-ng-c3945279308] span[_ngcontent-ng-c3945279308]{color:var(--quaternary-contrast);font-size:.875rem;display:flex;align-items:center}.docs-breadcrumb[_ngcontent-ng-c3945279308]:not(:last-child) span[_ngcontent-ng-c3945279308]::after{content:"chevron_right";font-family:var(--icons);margin-inline:.5rem;color:var(--quinary-contrast)}/*# sourceMappingURL=breadcrumb.component.css.map */</style><style ng-app-id="ng">[_nghost-ng-c1569637424]{display:flex;flex-direction:column;position:fixed;right:16px;top:0;height:fit-content;width:14rem;padding-inline:1rem;max-height:100vh;overflow-y:scroll}[_nghost-ng-c1569637424] aside[_ngcontent-ng-c1569637424]{margin-bottom:2rem}[_nghost-ng-c1569637424] [_ngcontent-ng-c1569637424]:has(ul li:only-child){display:none}@media only screen and (max-width: 1430px){[_nghost-ng-c1569637424]{position:relative;right:0;max-height:min-content;width:100%}}[_nghost-ng-c1569637424] .docs-title[_ngcontent-ng-c1569637424]{font-size:1.25rem;margin-block-start:var(--layout-padding)}[_nghost-ng-c1569637424]::-webkit-scrollbar-track{background:rgba(0,0,0,0);cursor:pointer}[_nghost-ng-c1569637424]::-webkit-scrollbar{width:6px;height:6px}[_nghost-ng-c1569637424]::-webkit-scrollbar-thumb{background-color:var(--septenary-contrast);border-radius:10px;transition:background-color .3s ease}[_nghost-ng-c1569637424]::-webkit-scrollbar-thumb:hover{background-color:var(--quinary-contrast)}[_nghost-ng-c1569637424] .docs-faceted-list-item[_ngcontent-ng-c1569637424]{font-size:.875rem}[_nghost-ng-c1569637424] .docs-faceted-list-item[_ngcontent-ng-c1569637424] a[_ngcontent-ng-c1569637424]{display:block;padding:.5rem .5rem .5rem 1rem;font-weight:500}[_nghost-ng-c1569637424] .docs-faceted-list-item.docs-toc-item-h3[_ngcontent-ng-c1569637424] a[_ngcontent-ng-c1569637424]{padding-inline-start:2rem}button[_ngcontent-ng-c1569637424]{background:rgba(0,0,0,0);border:none;font-size:.875rem;font-family:var(--inter-font);display:flex;align-items:center;margin:.5rem 0;color:var(--tertiary-contrast);transition:color .3s ease;cursor:pointer}button[_ngcontent-ng-c1569637424] docs-icon[_ngcontent-ng-c1569637424]{margin-inline-end:.35rem;opacity:.6;transition:opacity .3s ease}button[_ngcontent-ng-c1569637424]:hover docs-icon[_ngcontent-ng-c1569637424]{opacity:1}@media only screen and (max-width: 1430px){button[_ngcontent-ng-c1569637424]{display:none}}/*# sourceMappingURL=table-of-contents.component.css.map */</style></head> <body class="mat-typography docs-scroll-track-transparent-large"><!--nghm--> <adev-root ng-version="19.2.3" _nghost-ng-c2303807924 ngh="6" 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-c1846892879 ngh="1"><div _ngcontent-ng-c1846892879 id="primaryNav"><div _ngcontent-ng-c1846892879 class="adev-mobile-nav-bar"><button _ngcontent-ng-c1846892879 type="button" aria-label="Toggle mobile navigation" class="adev-mobile-nav-button"><svg _ngcontent-ng-c1846892879="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 223 236" width="32"><g _ngcontent-ng-c1846892879="" clip-path="url(#2a)"><path _ngcontent-ng-c1846892879="" 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-c1846892879="" 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-c1846892879=""><linearGradient _ngcontent-ng-c1846892879="" id="2b" x1="49.009" x2="225.829" y1="213.75" y2="129.722" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c1846892879="" stop-color="#E40035"/><stop _ngcontent-ng-c1846892879="" offset=".24" stop-color="#F60A48"/><stop _ngcontent-ng-c1846892879="" offset=".352" stop-color="#F20755"/><stop _ngcontent-ng-c1846892879="" offset=".494" stop-color="#DC087D"/><stop _ngcontent-ng-c1846892879="" offset=".745" stop-color="#9717E7"/><stop _ngcontent-ng-c1846892879="" offset="1" stop-color="#6C00F5"/></linearGradient><linearGradient _ngcontent-ng-c1846892879="" id="2c" x1="41.025" x2="156.741" y1="28.344" y2="160.344" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c1846892879="" stop-color="#FF31D9"/><stop _ngcontent-ng-c1846892879="" offset="1" stop-color="#FF5BE1" stop-opacity="0"/></linearGradient><clipPath _ngcontent-ng-c1846892879="" id="2a"><path _ngcontent-ng-c1846892879="" fill="#fff" d="M0 0h223v236H0z"/></clipPath></defs></svg><docs-icon _ngcontent-ng-c1846892879 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-c1846892879 class="adev-nav-primary docs-scroll-hide"><button _ngcontent-ng-c1846892879 type="button" aria-label="Close navigation" class="adev-close-nav"><docs-icon _ngcontent-ng-c1846892879 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-c1846892879 class="adev-nav__top"><li _ngcontent-ng-c1846892879 class="adev-nav-item adev-nav-item--logo"><a _ngcontent-ng-c1846892879 aria-label="Angular homepage" routerlink="/" href="/"><svg _ngcontent-ng-c1846892879="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 223 236" width="32" class="angular-logo"><g _ngcontent-ng-c1846892879="" clip-path="url(#a)"><path _ngcontent-ng-c1846892879="" 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-c1846892879="" 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-c1846892879=""><linearGradient _ngcontent-ng-c1846892879="" id="b" x1="49.009" x2="225.829" y1="213.75" y2="129.722" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c1846892879="" stop-color="#E40035"/><stop _ngcontent-ng-c1846892879="" offset=".24" stop-color="#F60A48"/><stop _ngcontent-ng-c1846892879="" offset=".352" stop-color="#F20755"/><stop _ngcontent-ng-c1846892879="" offset=".494" stop-color="#DC087D"/><stop _ngcontent-ng-c1846892879="" offset=".745" stop-color="#9717E7"/><stop _ngcontent-ng-c1846892879="" offset="1" stop-color="#6C00F5"/></linearGradient><linearGradient _ngcontent-ng-c1846892879="" id="c" x1="41.025" x2="156.741" y1="28.344" y2="160.344" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c1846892879="" stop-color="#FF31D9"/><stop _ngcontent-ng-c1846892879="" offset="1" stop-color="#FF5BE1" stop-opacity="0"/></linearGradient><clipPath _ngcontent-ng-c1846892879="" id="a"><path _ngcontent-ng-c1846892879="" fill="#fff" d="M0 0h223v236H0z"/></clipPath></defs></svg><!----><!----></a><div _ngcontent-ng-c1846892879 class="adev-nav-item"><button _ngcontent-ng-c1846892879 type="button" aria-label="Select Angular version" role="button" class="cdk-menu-trigger adev-version-button" data-cdk-menu-stack-id="cdk-menu-stack-102" aria-haspopup="menu" aria-expanded="false"> v19 <svg _ngcontent-ng-c1846892879="" xmlns="http://www.w3.org/2000/svg" height="15" viewBox="0 -960 960 960" width="15" fill="inherit"><path _ngcontent-ng-c1846892879="" d="M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z"/></svg></button><!----><!----></div></li><li _ngcontent-ng-c1846892879 class="adev-nav-item"><button _ngcontent-ng-c1846892879 type="button" title="Search docs" class="adev-nav-button"><svg _ngcontent-ng-c1846892879="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="inherit"><path _ngcontent-ng-c1846892879="" 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-c1846892879 class="adev-nav-item__label adev-search-desktop" aria-label="Open search dialog with "><kbd _ngcontent-ng-c1846892879><!--ngetn--><!--ngetn--><!--ngetn--><!--ngetn--></kbd><kbd _ngcontent-ng-c1846892879>K</kbd></span></button></li><li _ngcontent-ng-c1846892879 class="adev-nav-item adev-nav-item--active"><a _ngcontent-ng-c1846892879 href="/docs"><svg _ngcontent-ng-c1846892879="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="14" height="18" fill="inherit"><path _ngcontent-ng-c1846892879="" 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-c1846892879 class="adev-nav-item__label">Docs</span></a></li><li _ngcontent-ng-c1846892879 class="adev-nav-item"><a _ngcontent-ng-c1846892879 href="/tutorials"><svg _ngcontent-ng-c1846892879="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="18" height="10" fill="inherit"><path _ngcontent-ng-c1846892879="" 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-c1846892879 class="adev-nav-item__label">Tutorials</span></a></li><li _ngcontent-ng-c1846892879 class="adev-nav-item"><a _ngcontent-ng-c1846892879 href="/playground"><svg _ngcontent-ng-c1846892879="" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path _ngcontent-ng-c1846892879="" 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-c1846892879 class="adev-nav-item__label">Playground</span></a></li><li _ngcontent-ng-c1846892879 class="adev-nav-item"><a _ngcontent-ng-c1846892879 href="/reference"><svg _ngcontent-ng-c1846892879="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="14" height="18" fill="inherit"><path _ngcontent-ng-c1846892879="" 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-c1846892879 class="adev-nav-item__label">Reference</span></a></li></ul><div _ngcontent-ng-c1846892879 class="adev-nav__bottom"><div _ngcontent-ng-c1846892879 class="adev-nav-item"><button _ngcontent-ng-c1846892879 type="button" aria-label="Open social media links" class="cdk-menu-trigger" role="button" data-cdk-menu-stack-id="cdk-menu-stack-103" aria-haspopup="menu" aria-expanded="false"><docs-icon _ngcontent-ng-c1846892879 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-c1846892879 class="adev-nav-item"><button _ngcontent-ng-c1846892879 type="button" aria-label="Open theme picker" class="cdk-menu-trigger" role="button" data-cdk-menu-stack-id="cdk-menu-stack-104" aria-haspopup="menu" aria-expanded="false"><docs-icon _ngcontent-ng-c1846892879 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 _ngcontent-ng-c1846892879 class="adev-secondary-tablet-bar"><button _ngcontent-ng-c1846892879 type="button"><docs-icon _ngcontent-ng-c1846892879 aria-hidden="true" translate="no" class="material-symbols-outlined docs-icon_high-contrast" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">menu</docs-icon><span _ngcontent-ng-c1846892879>Docs</span><!----><!----></button></div><!----></div></div><adev-secondary-navigation _ngcontent-ng-c2303807924 _nghost-ng-c3716567088 ngh="4"><div _ngcontent-ng-c3716567088 class="adev-secondary-nav-mask" id="secondaryNav"><div _ngcontent-ng-c3716567088 class="docs-nav-secondary docs-scroll-track-transparent" style="transform: translateX(-100%); transition: 0ms;"><docs-navigation-list _ngcontent-ng-c3716567088 _nghost-ng-c3304066253 ngh="2"><!----><ul _ngcontent-ng-c3304066253 class="docs-navigation-list docs-faceted-list"><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><div _ngcontent-ng-c3304066253 mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-header mat-mdc-tooltip-disabled" aria-label="Introduction"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Introduction</span></div><!----><!----><!----><ul _ngcontent-ng-c3304066253 class="docs-navigation-list docs-faceted-list"><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="What is Angular?" href="/overview"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">What is Angular?</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Installation" href="/installation"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Installation</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Essentials" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Essentials</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Start coding! 🚀" href="/tutorials/learn-angular"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Start coding! 🚀</span><!----></a><!----><!----><!----><!----></li><!----></ul><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><div _ngcontent-ng-c3304066253 mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-header mat-mdc-tooltip-disabled" aria-label="In-depth Guides"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">In-depth Guides</span></div><!----><!----><!----><ul _ngcontent-ng-c3304066253 class="docs-navigation-list docs-faceted-list"><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Signals" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Signals</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Components" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Components</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Templates" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Templates</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Directives" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Directives</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Dependency Injection" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Dependency Injection</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Routing" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Routing</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Forms" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Forms</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="HTTP Client" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">HTTP Client</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon" aria-label="Server-side & hybrid-rendering" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Server-side & hybrid-rendering</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Testing" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Testing</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Internationalization" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Internationalization</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Experimental features" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Experimental features</span></button><!----><!----><!----></li><!----></ul><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><div _ngcontent-ng-c3304066253 mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-header mat-mdc-tooltip-disabled" aria-label="Developer Tools"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Developer Tools</span></div><!----><!----><!----><ul _ngcontent-ng-c3304066253 class="docs-navigation-list docs-faceted-list"><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-faceted-list-item-active docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Angular CLI" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Angular CLI</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Libraries" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Libraries</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="DevTools" href="/tools/devtools"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">DevTools</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Language Service" href="/tools/language-service"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Language Service</span><!----></a><!----><!----><!----><!----></li><!----></ul><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><div _ngcontent-ng-c3304066253 mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-header mat-mdc-tooltip-disabled" aria-label="Best Practices"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Best Practices</span></div><!----><!----><!----><ul _ngcontent-ng-c3304066253 class="docs-navigation-list docs-faceted-list"><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Style Guide" href="/style-guide"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Style Guide</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Security" href="/best-practices/security"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Security</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Accessibility" href="/best-practices/a11y"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Accessibility</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Performance" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Performance</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Keeping up-to-date" href="/update"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Keeping up-to-date</span><!----></a><!----><!----><!----><!----></li><!----></ul><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><div _ngcontent-ng-c3304066253 mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-header mat-mdc-tooltip-disabled" aria-label="Extended Ecosystem"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Extended Ecosystem</span></div><!----><!----><!----><ul _ngcontent-ng-c3304066253 class="docs-navigation-list docs-faceted-list"><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="NgModules" href="/guide/ngmodules/overview"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">NgModules</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Animations" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Animations</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Using RxJS with Angular" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Using RxJS with Angular</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-not-expanded-button docs-nav-item-has-icon mat-mdc-tooltip-disabled" aria-label="Service Workers & PWAs" aria-expanded="false"><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Service Workers & PWAs</span></button><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Web workers" href="/ecosystem/web-workers"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Web workers</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Custom build pipeline" href="/ecosystem/custom-build-pipeline"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Custom build pipeline</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><a _ngcontent-ng-c3304066253 target="_blank" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" href="https://github.com/angular/angularfire#readme" aria-label="Angular Fire"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text docs-external-link">Angular Fire</span><!----></a><!----><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><a _ngcontent-ng-c3304066253 target="_blank" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" href="https://github.com/angular/components/tree/main/src/google-maps#readme" aria-label="Google Maps"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text docs-external-link">Google Maps</span><!----></a><!----><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><a _ngcontent-ng-c3304066253 target="_blank" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" href="https://github.com/google-pay/google-pay-button#angular" aria-label="Google Pay"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text docs-external-link">Google Pay</span><!----></a><!----><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><a _ngcontent-ng-c3304066253 target="_blank" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" href="https://github.com/angular/components/blob/main/src/youtube-player/README.md" aria-label="YouTube player"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text docs-external-link">YouTube player</span><!----></a><!----><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><a _ngcontent-ng-c3304066253 target="_blank" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" href="https://material.angular.io/cdk/categories" aria-label="Angular CDK"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text docs-external-link">Angular CDK</span><!----></a><!----><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><a _ngcontent-ng-c3304066253 target="_blank" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" href="https://material.angular.io/" aria-label="Angular Material"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text docs-external-link">Angular Material</span><!----></a><!----><!----><!----><!----><!----></li><!----></ul><!----><!----></li><!----></ul><!----></docs-navigation-list><!----><docs-navigation-list _ngcontent-ng-c3716567088 _nghost-ng-c3304066253 ngh="3"><!----><ul _ngcontent-ng-c3304066253 class="docs-navigation-list docs-faceted-list"><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><!----><button _ngcontent-ng-c3304066253 type="button" mattooltipposition="after" class="mat-mdc-tooltip-trigger docs-secondary-nav-button docs-expanded-button mat-mdc-tooltip-disabled" aria-label="Angular CLI" aria-expanded="true"><docs-icon _ngcontent-ng-c3304066253 aria-hidden="true" translate="no" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">arrow_back</docs-icon><!----><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Angular CLI</span></button><!----><!----><ul _ngcontent-ng-c3304066253 class="docs-navigation-list docs-faceted-list"><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled docs-faceted-list-item-active" aria-label="Overview" href="/tools/cli"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Overview</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Local set-up" href="/tools/cli/setup-local"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Local set-up</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Building Angular apps" href="/tools/cli/build"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Building Angular apps</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger" aria-label="Serving Angular apps for development" href="/tools/cli/serve"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Serving Angular apps for development</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Deployment" href="/tools/cli/deployment"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Deployment</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="End-to-End Testing" href="/tools/cli/end-to-end"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">End-to-End Testing</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger" aria-label="Migrating to new build system" href="/tools/cli/build-system-migration"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Migrating to new build system</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Build environments" href="/tools/cli/environments"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Build environments</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Angular CLI builders" href="/tools/cli/cli-builder"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Angular CLI builders</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger" aria-label="Generating code using schematics" href="/tools/cli/schematics"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Generating code using schematics</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Authoring schematics" href="/tools/cli/schematics-authoring"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Authoring schematics</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Schematics for libraries" href="/tools/cli/schematics-for-libraries"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Schematics for libraries</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="Template type checking" href="/tools/cli/template-typecheck"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Template type checking</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger" aria-label="Ahead-of-time (AOT) compilation" href="/tools/cli/aot-compiler"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">Ahead-of-time (AOT) compilation</span><!----></a><!----><!----><!----><!----></li><li _ngcontent-ng-c3304066253 class="docs-faceted-list-item"><!----><a _ngcontent-ng-c3304066253 routerlinkactive="docs-faceted-list-item-active" mattooltipposition="after" class="mat-mdc-tooltip-trigger mat-mdc-tooltip-disabled" aria-label="AOT metadata errors" href="/tools/cli/aot-metadata-errors"><span _ngcontent-ng-c3304066253 class="docs-faceted-list-item-text">AOT metadata errors</span><!----></a><!----><!----><!----><!----></li><!----></ul><!----><!----></li><!----></ul><!----></docs-navigation-list><!----></div></div></adev-secondary-navigation><!----><div _ngcontent-ng-c2303807924 class="docs-app-main-content"><!----><!----><router-outlet _ngcontent-ng-c2303807924></router-outlet><docs-docs _nghost-ng-c4220121183 ngh="5"><docs-viewer _ngcontent-ng-c4220121183 class="docs-viewer" ngh="0"> <header class="docs-header"> <docs-breadcrumb ng-version="19.2.3" _nghost-ng-c3945279308 ngh="7"><div _ngcontent-ng-c3945279308 class="docs-breadcrumb"><!----><span _ngcontent-ng-c3945279308>Developer Tools</span><!----></div><div _ngcontent-ng-c3945279308 class="docs-breadcrumb"><!----><span _ngcontent-ng-c3945279308>Angular CLI</span><!----></div><!----></docs-breadcrumb> <!-- Page title --> <div class="docs-page-title"> <h1 tabindex="-1">The Angular CLI</h1> <a class="docs-github-links" target="_blank" href="https://github.com/angular/angular/edit/main/adev/src/content/tools/cli/overview.md" title="Edit this page" aria-label="Edit this page"> <!-- Pencil --> <docs-icon role="presentation" aria-hidden="true" translate="no" ng-version="19.2.3" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0"></docs-icon> </a> </div> </header> <p>The Angular CLI is a command-line interface tool which allows you to scaffold, develop, test, deploy, and maintain Angular applications directly from a command shell.</p> <p>Angular CLI is published on npm as the <code>@angular/cli</code> package and includes a binary named <code>ng</code>. Commands invoking <code>ng</code> are using the Angular CLI.</p> <div class="docs-callout docs-callout-helpful"> <h3>Try Angular without local setup</h3> <p>If you are new to Angular, you might want to start with <a href="tutorials/learn-angular">Try it now!</a>, which introduces the essentials of Angular in the context of a ready-made basic online store app for you to examine and modify. This standalone tutorial takes advantage of the interactive <a href="https://stackblitz.com" target="_blank">StackBlitz</a> environment for online development. You don't need to set up your local environment until you're ready.</p> </div> <div class="docs-card-grid"> <a href="tools/cli/setup-local" class="docs-card"> <div> <h3>Getting Started</h3> <p>Install Angular CLI to create and build your first app.</p> </div> <span>Get Started</span> </a> <a href="cli" class="docs-card"> <div> <h3>Command Reference</h3> <p>Discover CLI commands to make you more productive with Angular.</p> </div> <span>Learn More</span> </a> <a href="tools/cli/schematics" class="docs-card"> <div> <h3>Schematics</h3> <p>Create and run schematics to generate and modify source files in your application automatically.</p> </div> <span>Learn More</span> </a> <a href="tools/cli/cli-builder" class="docs-card"> <div> <h3>Builders</h3> <p>Create and run builders to perform complex transformations from your source code to generated build outputs.</p> </div> <span>Learn More</span> </a> </div> <docs-table-of-contents toc-skip-content="true" ng-version="19.2.3" _nghost-ng-c1569637424 ngh="8"><aside _ngcontent-ng-c1569637424><nav _ngcontent-ng-c1569637424><header _ngcontent-ng-c1569637424><h2 _ngcontent-ng-c1569637424 class="docs-title">On this page</h2></header><ul _ngcontent-ng-c1569637424 class="docs-faceted-list"><!----></ul></nav><button _ngcontent-ng-c1569637424 type="button"><docs-icon _ngcontent-ng-c1569637424 aria-hidden="true" translate="no" role="presentation" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">arrow_upward_alt</docs-icon> Back to the top </button></aside></docs-table-of-contents><h2 id="cli-command-language-syntax"> <a href="#cli-command-language-syntax" class="docs-anchor" tabindex="-1" aria-label="Link to CLI command-language syntax">CLI command-language syntax</a> </h2> <p>Angular CLI roughly follows Unix/POSIX conventions for option syntax.</p> <h3 id="boolean-options"> <a href="#boolean-options" class="docs-anchor" tabindex="-1" aria-label="Link to Boolean options">Boolean options</a> </h3> <p>Boolean options have two forms: <code>--this-option</code> sets the flag to <code>true</code>, <code>--no-this-option</code> sets it to <code>false</code>. You can also use <code>--this-option=false</code> or <code>--this-option=true</code>. If neither option is supplied, the flag remains in its default state, as listed in the reference documentation.</p> <h3 id="array-options"> <a href="#array-options" class="docs-anchor" tabindex="-1" aria-label="Link to Array options">Array options</a> </h3> <p>Array options can be provided in two forms: <code>--option value1 value2</code> or <code>--option value1 --option value2</code>.</p> <h3 id="key-value-options"> <a href="#key-value-options" class="docs-anchor" tabindex="-1" aria-label="Link to Key/value options">Key/value options</a> </h3> <p>Some options like <code>--define</code> expect an array of <code>key=value</code> pairs as their values. Just like array options, key/value options can be provided in two forms: <code>--define 'KEY_1="value1"' KEY_2=true</code> or <code>--define 'KEY_1="value1"' --define KEY_2=true</code>.</p> <h3 id="relative-paths"> <a href="#relative-paths" class="docs-anchor" tabindex="-1" aria-label="Link to Relative paths">Relative paths</a> </h3> <p>Options that specify files can be given as absolute paths, or as paths relative to the current working directory, which is generally either the workspace or project root.</p> </docs-viewer><!----><!----></docs-docs><!----><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-SIKIFBLL.js" type="module"></script> <div class="cdk-live-announcer-element cdk-visually-hidden" aria-atomic="true" aria-live="polite" id="cdk-live-announcer-34"></div><script id="ng-state" type="application/json">{"3985476361":{"b":"\n \u003Cheader class=\"docs-header\">\n \u003Cdocs-breadcrumb>\u003C/docs-breadcrumb>\n\n \n \u003C!-- Page title -->\n \u003Cdiv class=\"docs-page-title\">\n \u003Ch1 tabindex=\"-1\">The Angular CLI\u003C/h1>\n \u003Ca class=\"docs-github-links\" target=\"_blank\" href=\"https://github.com/angular/angular/edit/main/adev/src/content/tools/cli/overview.md\" title=\"Edit this page\" aria-label=\"Edit this page\">\n \u003C!-- Pencil -->\n \u003Cdocs-icon role=\"presentation\">edit\u003C/docs-icon>\n \u003C/a>\n \u003C/div>\n \u003C/header>\n \u003Cp>The Angular CLI is a command-line interface tool which allows you to scaffold, develop, test, deploy, and maintain Angular applications directly from a command shell.\u003C/p>\n\u003Cp>Angular CLI is published on npm as the \u003Ccode>@angular/cli\u003C/code> package and includes a binary named \u003Ccode>ng\u003C/code>. Commands invoking \u003Ccode>ng\u003C/code> are using the Angular CLI.\u003C/p>\n\n \u003Cdiv class=\"docs-callout docs-callout-helpful\">\n \u003Ch3>Try Angular without local setup\u003C/h3>\n \u003Cp>If you are new to Angular, you might want to start with \u003Ca href=\"tutorials/learn-angular\">Try it now!\u003C/a>, which introduces the essentials of Angular in the context of a ready-made basic online store app for you to examine and modify.\nThis standalone tutorial takes advantage of the interactive \u003Ca href=\"https://stackblitz.com\" target=\"_blank\">StackBlitz\u003C/a> environment for online development.\nYou don't need to set up your local environment until you're ready.\u003C/p>\n\n \u003C/div>\n \n \u003Cdiv class=\"docs-card-grid\">\n \n \u003Ca href=\"tools/cli/setup-local\" class=\"docs-card\">\n \u003Cdiv>\n \u003Ch3>Getting Started\u003C/h3>\n \u003Cp>Install Angular CLI to create and build your first app.\u003C/p>\n\n \u003C/div>\n \u003Cspan>Get Started\u003C/span>\n \u003C/a>\n \n \u003Ca href=\"cli\" class=\"docs-card\">\n \u003Cdiv>\n \u003Ch3>Command Reference\u003C/h3>\n \u003Cp>Discover CLI commands to make you more productive with Angular.\u003C/p>\n\n \u003C/div>\n \u003Cspan>Learn More\u003C/span>\n \u003C/a>\n \n \u003Ca href=\"tools/cli/schematics\" class=\"docs-card\">\n \u003Cdiv>\n \u003Ch3>Schematics\u003C/h3>\n \u003Cp>Create and run schematics to generate and modify source files in your application automatically.\u003C/p>\n\n \u003C/div>\n \u003Cspan>Learn More\u003C/span>\n \u003C/a>\n \n \u003Ca href=\"tools/cli/cli-builder\" class=\"docs-card\">\n \u003Cdiv>\n \u003Ch3>Builders\u003C/h3>\n \u003Cp>Create and run builders to perform complex transformations from your source code to generated build outputs.\u003C/p>\n\n \u003C/div>\n \u003Cspan>Learn More\u003C/span>\n \u003C/a>\n \n \u003C/div>\n \n \u003Ch2 id=\"cli-command-language-syntax\">\n \u003Ca href=\"#cli-command-language-syntax\" class=\"docs-anchor\" tabindex=\"-1\" aria-label=\"Link to CLI command-language syntax\">CLI command-language syntax\u003C/a>\n \u003C/h2>\n \u003Cp>Angular CLI roughly follows Unix/POSIX conventions for option syntax.\u003C/p>\n\n \u003Ch3 id=\"boolean-options\">\n \u003Ca href=\"#boolean-options\" class=\"docs-anchor\" tabindex=\"-1\" aria-label=\"Link to Boolean options\">Boolean options\u003C/a>\n \u003C/h3>\n \u003Cp>Boolean options have two forms: \u003Ccode>--this-option\u003C/code> sets the flag to \u003Ccode>true\u003C/code>, \u003Ccode>--no-this-option\u003C/code> sets it to \u003Ccode>false\u003C/code>.\nYou can also use \u003Ccode>--this-option=false\u003C/code> or \u003Ccode>--this-option=true\u003C/code>.\nIf neither option is supplied, the flag remains in its default state, as listed in the reference documentation.\u003C/p>\n\n \u003Ch3 id=\"array-options\">\n \u003Ca href=\"#array-options\" class=\"docs-anchor\" tabindex=\"-1\" aria-label=\"Link to Array options\">Array options\u003C/a>\n \u003C/h3>\n \u003Cp>Array options can be provided in two forms: \u003Ccode>--option value1 value2\u003C/code> or \u003Ccode>--option value1 --option value2\u003C/code>.\u003C/p>\n\n \u003Ch3 id=\"key-value-options\">\n \u003Ca href=\"#key-value-options\" class=\"docs-anchor\" tabindex=\"-1\" aria-label=\"Link to Key/value options\">Key/value options\u003C/a>\n \u003C/h3>\n \u003Cp>Some options like \u003Ccode>--define\u003C/code> expect an array of \u003Ccode>key=value\u003C/code> pairs as their values.\nJust like array options, key/value options can be provided in two forms:\n\u003Ccode>--define 'KEY_1="value1"' KEY_2=true\u003C/code> or \u003Ccode>--define 'KEY_1="value1"' --define KEY_2=true\u003C/code>.\u003C/p>\n\n \u003Ch3 id=\"relative-paths\">\n \u003Ca href=\"#relative-paths\" class=\"docs-anchor\" tabindex=\"-1\" aria-label=\"Link to Relative paths\">Relative paths\u003C/a>\n \u003C/h3>\n \u003Cp>Options that specify files can be given as absolute paths, or as paths relative to the current working directory, which is generally either the workspace or project root.\u003C/p>\n","h":{},"s":200,"st":"OK","u":"assets/content/tools/cli/overview.md.html","rt":"text"},"__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":[{"i":"t10","r":1,"n":{"3":"2f"},"t":{"4":"t23","5":"t24"},"c":{"4":[{"i":"t23","r":1}],"5":[]}}]}},{"t":{"0":"t26","2":"t27"},"c":{"0":[],"2":[{"i":"t26","r":1,"t":{"2":"t28"},"c":{"2":[{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[],"2":[{"i":"t33","r":3,"t":{"0":"t36","1":"t37"},"c":{"0":[{"i":"t36","r":1}],"1":[]}}],"3":[{"i":"t34","r":2,"t":{"0":"t40"},"c":{"0":[{"i":"t26","r":1,"t":{"2":"t28"},"c":{"2":[{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[{"i":"t29","r":3,"t":{"0":"t30","1":"t31"},"c":{"0":[],"1":[{"i":"t31","r":1,"t":{"3":"t32"},"c":{"3":[]}}]}}],"2":[],"3":[]},"x":2},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[],"2":[{"i":"t33","r":3,"t":{"0":"t36","1":"t37"},"c":{"0":[],"1":[{"i":"t37","r":1,"t":{"2":"t38"},"c":{"2":[]}}]}}],"3":[]}},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[{"i":"t29","r":3,"t":{"0":"t30","1":"t31"},"c":{"0":[],"1":[{"i":"t31","r":1,"t":{"3":"t32"},"c":{"3":[]}}]}}],"2":[],"3":[]}}]}}]}}]}},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[],"2":[{"i":"t33","r":3,"t":{"0":"t36","1":"t37"},"c":{"0":[{"i":"t36","r":1}],"1":[]}}],"3":[{"i":"t34","r":2,"t":{"0":"t40"},"c":{"0":[{"i":"t26","r":1,"t":{"2":"t28"},"c":{"2":[{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[],"2":[{"i":"t33","r":3,"t":{"0":"t36","1":"t37"},"c":{"0":[],"1":[{"i":"t37","r":1,"t":{"2":"t38"},"c":{"2":[]}}]}}],"3":[]},"x":12}]}}]}}]}},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[],"2":[{"i":"t33","r":3,"t":{"0":"t36","1":"t37"},"c":{"0":[{"i":"t36","r":1}],"1":[]}}],"3":[{"i":"t34","r":2,"t":{"0":"t40"},"c":{"0":[{"i":"t26","r":1,"t":{"2":"t28"},"c":{"2":[{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[],"2":[{"i":"t33","r":3,"t":{"0":"t36","1":"t37"},"c":{"0":[],"1":[{"i":"t37","r":1,"t":{"2":"t38"},"c":{"2":[]}}]}}],"3":[]},"x":2},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[{"i":"t29","r":3,"t":{"0":"t30","1":"t31"},"c":{"0":[],"1":[{"i":"t31","r":1,"t":{"3":"t32"},"c":{"3":[]}}]}}],"2":[],"3":[]},"x":2}]}}]}}]}},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[],"2":[{"i":"t33","r":3,"t":{"0":"t36","1":"t37"},"c":{"0":[{"i":"t36","r":1}],"1":[]}}],"3":[{"i":"t34","r":2,"t":{"0":"t40"},"c":{"0":[{"i":"t26","r":1,"t":{"2":"t28"},"c":{"2":[{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[{"i":"t29","r":3,"t":{"0":"t30","1":"t31"},"c":{"0":[],"1":[{"i":"t31","r":1,"t":{"3":"t32"},"c":{"3":[]}}]}}],"2":[],"3":[]},"x":3},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[],"2":[{"i":"t33","r":3,"t":{"0":"t36","1":"t37"},"c":{"0":[],"1":[{"i":"t37","r":1,"t":{"2":"t38"},"c":{"2":[]}}]}}],"3":[]}},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[{"i":"t29","r":3,"t":{"0":"t30","1":"t31"},"c":{"0":[],"1":[{"i":"t31","r":1,"t":{"3":"t32"},"c":{"3":[]}}]}}],"2":[],"3":[]}}]}}]}}]}},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[],"2":[{"i":"t33","r":3,"t":{"0":"t36","1":"t37"},"c":{"0":[{"i":"t36","r":1}],"1":[]}}],"3":[{"i":"t34","r":2,"t":{"0":"t40"},"c":{"0":[{"i":"t26","r":1,"t":{"2":"t28"},"c":{"2":[{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[{"i":"t29","r":3,"t":{"0":"t30","1":"t31"},"c":{"0":[],"1":[{"i":"t31","r":1,"t":{"3":"t32"},"c":{"3":[]}}]}}],"2":[],"3":[]}},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[],"2":[{"i":"t33","r":3,"t":{"0":"t36","1":"t37"},"c":{"0":[],"1":[{"i":"t37","r":1,"t":{"2":"t38"},"c":{"2":[]}}]}}],"3":[]},"x":3},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[{"i":"t29","r":3,"t":{"0":"t30","1":"t31"},"c":{"0":[],"1":[{"i":"t31","r":1,"t":{"3":"t32"},"c":{"3":[]}}]}}],"2":[],"3":[]},"x":2},{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[{"i":"t29","r":3,"t":{"0":"t30","1":"t31"},"c":{"0":[{"i":"t30","r":1,"t":{"3":"t35"},"c":{"3":[]}}],"1":[]}}],"2":[],"3":[]},"x":6}]}}]}}]}}]}}]}},{"t":{"0":"t26","2":"t27"},"c":{"0":[],"2":[{"i":"t26","r":1,"t":{"2":"t28"},"c":{"2":[{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[],"2":[{"i":"t33","r":3,"t":{"0":"t36","1":"t37"},"c":{"0":[],"1":[{"i":"t37","r":1,"t":{"2":"t38"},"c":{"2":[{"i":"t38","r":1,"n":{"1":"0f"}}]}}]}}],"3":[{"i":"t34","r":2,"t":{"0":"t40"},"c":{"0":[{"i":"t26","r":1,"t":{"2":"t28"},"c":{"2":[{"i":"t28","r":1,"t":{"1":"t29","2":"t33","3":"t34"},"c":{"1":[{"i":"t29","r":3,"t":{"0":"t30","1":"t31"},"c":{"0":[],"1":[{"i":"t31","r":1,"t":{"3":"t32"},"c":{"3":[]}}]}}],"2":[],"3":[]},"x":15}]}}]}}]}}]}}]}},{"t":{"2":"t25","4":"t39"},"c":{"2":[{"i":"t25","r":1}],"4":[{"i":"t39","r":1}]}},{"n":{"1":"hf"},"t":{"1":"t41"},"c":{"1":[{"i":"t41","r":2,"c":{"0":[]}}]}},{"t":{"2":"t0","3":"t1","6":"t11","8":"t12","9":"t13","12":"t22"},"c":{"2":[],"3":[],"6":[{"i":"t11","r":1}],"8":[],"9":[],"11":[{"i":"c4220121183","r":1}],"12":[{"i":"t22","r":1}]}},{"t":{"1":"t42"},"c":{"1":[{"i":"t42","r":1,"t":{"1":"t43","2":"t44"},"c":{"1":[],"2":[{"i":"t44","r":1}]},"x":2}]}},{"t":{"7":"t45"},"c":{"7":[]},"n":{"10":"9f"}}]}</script></body></html>