{"id":2882,"date":"2022-12-09T10:32:13","date_gmt":"2022-12-09T10:32:13","guid":{"rendered":"https:\/\/www.nethues.com\/blog\/?p=2882"},"modified":"2023-09-19T09:42:40","modified_gmt":"2023-09-19T09:42:40","slug":"angular-15-is-live-now","status":"publish","type":"post","link":"https:\/\/www.nethues.com\/blog\/angular-15-is-live-now\/","title":{"rendered":"Angular 15 is Live Now: Explore New Features, Code Practices, &#038; Concerned Deprecations"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Angular, the fifth most popular web framework with 20.39% popularity as per Statista, has come up with a new &amp; exciting version 15. The angular v15 is live and has been rolled out for the masses.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">It is a significant shift for tech enthusiasts, primarily JavaScript &amp; TypeScript programmers and developers. The new release will make remarkable contributions to the digital development world, as there are tons of Angular-based applications in active use.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"So_without_any_hither_and_thither_let%E2%80%99s_dive_into_the_details_of_what%E2%80%99s_new_with_Angular_15\"><\/span><b>So without any hither and thither, let&#8217;s dive into the details of what&#8217;s new with Angular 15<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_Experience_Standalone_Components_API\"><\/span><b>#1. Experience Standalone Components API<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The concept of the standalone components API was initially made available in Angular 14. Its objective is to <a href=\"https:\/\/www.nethues.com\/blog\/why-is-angularjs-ideal-for-web-application-development\/\">create Angular applications<\/a> without wasting time defining the NgModules. With Angular 15, the standalone components API is now finally successful, as it has higher performance than its predecessor.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Notably, the standalone component is compatible with HttpClient, Angular Elements, and many others. Coders can also leverage the feature for bootstrapping an application in a solo component.<\/span><\/p>\n<p><strong>The following example illustrates how to leverage the standalone components API:<\/strong><\/p>\n<pre class=\"block-code\"><code>import {bootstrapApplication} from '@angular\/platform-browser';\r\nimport {ImageGridComponent} from'.\/image-grid';\r\n@Component({\r\nstandalone: true,\r\nselector: 'photo-gallery',\r\n imports: [ImageGridComponent],\r\ntemplate: `\r\n\u2026 &lt;image-grid [images]=\"imageList\"&gt;&lt;\/image-grid&gt;\r\n `,\r\n}) \r\nexport class PhotoGalleryComponent {\r\n\/\/ component logic\r\n}\r\nbootstrapApplication(PhotoGalleryComponent);<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">The imports function now lets <a href=\"https:\/\/www.nethues.com\/hire-angularjs-developer\">Angular developers<\/a> leverage reference standalone directives &amp; pipes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The Angular v15 also lets a developer preview and mark components, directives, and pipes as &#8220;standalone: true&#8221;. Thus, it successfully eliminates the need to declare components into NgModule. Moreover, developers can directly import NgModule into the standalone component using the code: [module_name].<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_Improved_and_more_efficient_use_of_standalone_api\"><\/span><b>#2. Improved and more efficient use of standalone api<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The new release has a router standalone API. It lets developers build the multi-route application. The following example shows how:<\/span><\/p>\n<pre class=\"block-code\"><code>export const appRoutes: Routes = [{\r\npath: 'lazy',\r\nloadChildren: () =&gt; import('.\/lazy\/lazy.routes')\r\n.then(routes =&gt; routes.lazyRoutes)\r\n}];\r\n<\/code><\/pre>\n<p><strong>You can declare the lazyRoutes in the following manner:<\/strong><\/p>\n<pre class=\"block-code\"><code>\r\nimport {Routes} from '@angular\/router';\r\n\r\nimport {LazyComponent} from '.\/lazy.component';\r\n\r\nexport const lazyRoutes: Routes = [{path: '', component: LazyComponent}];\r\n<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">The new release also lets you register the appRoutes via the bootstrapApplication method. One can also call it via the ProvideRouter API, which is tree-shakable!<\/span><\/p>\n<pre class=\"block-code\"><code>bootstrapApplication(AppComponent, {\r\nproviders: [\r\nprovideRouter(appRoutes)\r\n]\r\n});\r\n<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">An essential aspect of Angular 15 is that the developers can eliminate unused features and reduce the code size by up to 11%.\u00a0\u00a0<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_Directive_Composition_API\"><\/span><b>#3. Directive Composition API<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Code reusability is a significant factor when looking for faster development cycles and a faster time-to-market application. The Angular 15 offers top-notch reusability of directives. It comes with the introduction of Directive Composition API, which plays a pivotal role in code reusability.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example, the developers can boost host elements with directives and leverage code reuse strategy with the assistance of a compiler. Along with the standalone directives, programmers can leverage the Directive Composition API<\/span><\/p>\n<pre class=\"block-code\"><code>@Component({\r\nselector: 'mat-menu',\r\nhostDirectives: [HasColor, {\r\ndirective: CdkMenu,\r\ninputs: ['cdkMenuDisabled: disabled'],\r\noutputs: ['cdkMenuClosed: closed']\r\n}]\r\n})\r\nclass MatMenu {}\r\n<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">The MatMenu is now available and effective via two hostDirectives, i.e., HasColor and CdkMenu. Moreover, with this feature, MatMenu lets users have hands on all the properties from these two directives.\u00a0<\/span><\/p>\n<hr \/>\n<p class=\"pMargin-b\" style=\"text-align: center;\">You May Find This Interesting :\u00a0<a href=\"https:\/\/www.nethues.com\/blog\/guide-to-angular-performance-tuning\/\" rel=\"bookmark\">In-Depth Guide To Angular Performance Tuning<\/a><\/p>\n<hr \/>\n<h3><span class=\"ez-toc-section\" id=\"4_Get_Your_Hands_on_Stable_%E2%80%9CNgOptimizedImage%E2%80%9D_Image_Directive\"><\/span><strong>#4. Get Your Hands on Stable &#8220;NgOptimizedImage&#8221; Image Directive<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Image loading time plays a vital role in the speed performance of any web application. The Angular framework was introduced with the NgOptimizedImage directive in the older versions to offer minimum image loading time. However, it was far from perfection. With Angular15, the directive is much more stable and is finally a reliable image-loading tool.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Have a look at the experiment done by Land&#8217;s End. Using the NgOptimizedImage directive an application has noticed an improvement as impressive as a 75% decrement in the LCP (Largest Contentful Paint) image loading time.<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-2883 aligncenter\" src=\"https:\/\/www.nethues.com\/blog\/app\/uploads\/2022\/12\/Nethues-Blog-Image-Angular-15-Live-Now2-scaled.jpg\" alt=\"LCP\" width=\"2560\" height=\"1344\" srcset=\"https:\/\/www.nethues.com\/blog\/app\/uploads\/2022\/12\/Nethues-Blog-Image-Angular-15-Live-Now2-scaled.jpg 2560w, https:\/\/www.nethues.com\/blog\/app\/uploads\/2022\/12\/Nethues-Blog-Image-Angular-15-Live-Now2-300x158.jpg 300w, https:\/\/www.nethues.com\/blog\/app\/uploads\/2022\/12\/Nethues-Blog-Image-Angular-15-Live-Now2-1024x538.jpg 1024w, https:\/\/www.nethues.com\/blog\/app\/uploads\/2022\/12\/Nethues-Blog-Image-Angular-15-Live-Now2-768x403.jpg 768w, https:\/\/www.nethues.com\/blog\/app\/uploads\/2022\/12\/Nethues-Blog-Image-Angular-15-Live-Now2-1536x806.jpg 1536w, https:\/\/www.nethues.com\/blog\/app\/uploads\/2022\/12\/Nethues-Blog-Image-Angular-15-Live-Now2-2048x1075.jpg 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p><b>Along with the previously offered features, it also comes with the following:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Automatic srcset Generation:<\/b><span style=\"font-weight: 400;\"> It deals with the automated generation of srcset, responsible for uploading an appropriate image size under the request, thus reducing the image loading time.<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Fill Mode [experimental]:<\/b><span style=\"font-weight: 400;\"> It is responsible for removing the declaration of image dimensions and instilling an image in the original container. The method is efficient for handling images whose dimensions are not specific or when the developers migrate the CSS background image to leverage image directive and thus is effective in managing inappropriate as well as any appropriately sized image.<\/span><\/li>\n<\/ul>\n<p><strong>You can use the standalone NgOptimizedImage directive in your Angular component or NgModule.<\/strong><\/p>\n<pre class=\"block-code\"><code>import { NgOptimizedImage } from '@angular\/common';\r\n\r\n\/\/ Include it into the necessary NgModule\r\n@NgModule({\r\nimports: [NgOptimizedImage],\r\n})\r\nclass AppModule {}\r\n\r\n\/\/ ... or a standalone Component\r\n@Component({\r\nstandalone: true\r\nimports: [NgOptimizedImage],\r\n})\r\nclass MyStandaloneComponent {}\r\n<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">Note: For using the Angular image directive within a component, you must replace the image src attribute with ngSrc. Also, the concerned Angular team needs to mark the priority attribute, which is ideal for optimizing the speed of the LCP images.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"5_Trim_Boilerplate_in_Guards\"><\/span><b>#5. Trim Boilerplate in Guards<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">We will discuss this aspect with the help of an example. Or the sake of clarity, let&#8217;s analyze using guard whether the user has logged in:<\/span><\/p>\n<pre class=\"block-code\"><code>@Injectable({ providedIn: 'root' })\r\nexport class MyGuardWithDependency implements CanActivate {\r\nconstructor(private loginService: LoginService) {}\r\n\r\ncanActivate() {\r\nreturn this.loginService.isLoggedIn();\r\n}\r\n}\r\n\r\nconst route = {\r\npath: 'somePath',\r\ncanActivate: [MyGuardWithDependency]\r\n};\r\n<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">In the code mentioned above, the LoginService contains vital logic. In contrast, the guard is responsible for only one trigger being invoked, which is LoggedIn (); despite a clear structure, there is an unnecessary or overuse of boilerplate coding, which developers can eliminate effectively.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>With Functional Router Guards, it is now possible. For example, the above code can be replaced by the following code<\/strong>.<\/span><\/p>\n<pre class=\"block-code\"><code>const route = {\r\npath: 'admin',\r\ncanActivate: [() =&gt; inject(LoginService).isLoggedIn()]\r\n};\r\n<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">Moreover, Functional Guards are compostable, like cherries on the top of the cake. It lets you develop a Factor-like function, manage a given configuration, and return a function per the programmer&#8217;s need.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"6_Neat_Stack_Traces\"><\/span><b>#6. Neat Stack Traces<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Now programmers can count upon clean and straightforward stack traces for simplified application debugging. Earlier the framework gave the coding team only single-liner texts, making managing errors difficult. For example, look at the snippet of the error indication available with the earlier version of the angular framework.<\/span><\/p>\n<pre class=\"block-code\"><code>ERROR Error: Uncaught (in promise): Error\r\nError\r\nat app.component.ts:18:11\r\nat Generator.next (&lt;anonymous&gt;)\r\nat asyncGeneratorStep (asyncToGenerator.js:3:1)\r\nat _next (asyncToGenerator.js:25:1)\r\nat _ZoneDelegate.invoke (zone.js:372:26)\r\nat Object.onInvoke (core.mjs:26378:33)\r\nat _ZoneDelegate.invoke (zone.js:371:52)\r\nat Zone.run (zone.js:134:43)\r\nat zone.js:1275:36\r\nat _ZoneDelegate.invokeTask (zone.js:406:31)\r\nat resolvePromise (zone.js:1211:31)\r\nat zone.js:1118:17\r\nat zone.js:1134:33\r\n<\/code><\/pre>\n<p><b>There were mainly two issues with this method of error declaration:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Error messages were from the third-party dependencies, and<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Zero data about the user-facing the errors<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">In contrast, the new <a href=\"https:\/\/www.nethues.com\/angularjs-development\">Angular web development<\/a> framework will offer the following:<\/span><\/p>\n<pre class=\"block-code\"><code>ERROR Error: Uncaught (in promise): Error\r\nError\r\nat app.component.ts:18:11\r\nat fetch (async) \r\nat (anonymous) (app.component.ts:4)\r\nat request (app.component.ts:4)\r\nat (anonymous) (app.component.ts:17)\r\nat submit (app.component.ts:15)\r\nat AppComponent_click_3_listener (app.component.html:4)\r\n<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">From the above example, you can view the error message with detailed insights into the path of the encountered error. This saves time in resolving the issue.<\/span><\/p>\n\r\n<div class=\"cta_section blue_gradient cta-section-2\">\r\n<div class=\"container\">\r\n<div class=\"text-left\">\r\n<div class=\"cta-h\" style=\"color: #fff;\">Transform Your Ecommerce Vision into Reality<\/div>\r\n<div class=\"default_btn blog-cta-btn\">\r\n\t\t<a class=\"orange_gradient btn-cta-blog\" href=\"https:\/\/www.nethues.com\/contact\">Hire Professional Magento Developers<\/a><\/a>\r\n\t\t\t\t\t<\/div>\r\n<\/div>\r\n<div class=\"image-right\">\r\n\t\t<img src=\"https:\/\/www.nethues.com\/blog\/app\/uploads\/2021\/07\/eCommerce-App-01-01.png\"alt=\"user-flow\" width=\"105\" height=\"104\" >\r\n\t\t<\/div>\r\n<div><\/div>\r\n<\/div>\r\n<\/div>\r\n\t\r\n\t\r\n\n<h3><span class=\"ez-toc-section\" id=\"7_Welcome_Stable_MDC_%E2%80%93_Based_Components\"><\/span><b>#7. Welcome Stable MDC &#8211; Based Components<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The upgrade team has done a praise-worthy job refactoring the component based on the Angular Material Design Components for the web applications. The upgraded components will give users greater accessibility and are coherent with the Angular Material Design Specifications.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A significant refactoring section is visible in the DOM and CSS parts. With this new take on responsiveness, developers will experience a few styles in the old Angular applications requiring adjustments. It will be prominent in the case of CSS overriding internal elements of the migrated components.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Moreover, the new version has deprecated many components, which can be recovered with the &#8220;legacy&#8221; import. The following is an example of retrieving old mat-button implementation:<\/span><\/p>\n<pre class=\"block-code\"><code>import {MatLegacyButtonModule} from '@angular\/material\/legacy-button';\r\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"8_Component_Dev_Kit_Listbox\"><\/span><b>#8. Component Dev Kit Listbox<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The CDK Listbox assists in designing and developing UI components. The new release comes with a CDK Listbox that facilitates customization of the Listbox interactions drawn up by the WAI-ARIA Listbox pattern per the project&#8217;s needs.<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2885\" src=\"https:\/\/www.nethues.com\/blog\/app\/uploads\/2022\/12\/Nethues-Blog-Image-Angular-15-Live-Now3.gif\" alt=\"\" width=\"536\" height=\"496\" \/><\/p>\n<p><strong>You get hands-on behavioral interactions, which include the following:<\/strong><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">\u00a0Keyboard Interactions<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Bidi Layout Support<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Focus Management.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Each directive has an associated ARIA role with the concerned host elements.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"9_Leverage_Extended_esbuild_Support\"><\/span><b>#9. Leverage Extended esbuild Support<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The Angular 15 comes with innovative yet experimental support for the ng build, including the following<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Watch Support,<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Sass<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">SVG Template<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">File Replacement.<\/span><\/li>\n<\/ul>\n<p><strong>The command for leveraging the upgrade on the angular.json builder is as follows:<\/strong><\/p>\n<pre class=\"block-code\"><code>\"builder\": \"@angular-devkit\/build-angular:browser-esbuild\"\r\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"10_Few_Significant_Enhancements_with_Angular_v15\"><\/span><b>#10. Few Significant Enhancements with Angular v15<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Following are some other significant new enhancements that are bound to play a pivotal role in enhancing the UX of the developed application.<\/span><\/p>\n<p><b>Lazy Loading Improvement<\/b><\/p>\n<p><span style=\"font-weight: 400;\">The router can now auto-unwrap the default exports for lazy loading the images. The result is reduced boilerplates as the router functionalities have been significantly simplified. In simple words, the router can now directly look for the default export, which facilitates directly importing the lazy-file into the code when successful.<\/span><\/p>\n<p><b>Automatic Imports<\/b><\/p>\n<p><span style=\"font-weight: 400;\">The new Angular v15 brings greater confidence for the coders as they can make the most out of the language service. It automatically import components and their fixes in the template. It is applicable for the components otherwise not utilized in the standalone component or a NgModule.<\/span><\/p>\n<p><b>Improved Angular Components<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Experience a range of accessibility enhancements, including the following:<\/span><\/p>\n<p><span style=\"font-weight: 400;\"># Effective contrast ratios<\/span><\/p>\n<p><span style=\"font-weight: 400;\"># Expanded touch target sizes<\/span><\/p>\n<p><span style=\"font-weight: 400;\"># Refined ARIA semantics<\/span><\/p>\n<p><span style=\"font-weight: 400;\"># Significant API customization for a personalized experience.<\/span><\/p>\n<h4><b>Wrapping Up<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">That was all about the new features available with Angularv15. If your business is running on the Angular framework, it&#8217;s time to update to the latest version. You cannot afford to miss the new and exciting features that enhance the speed and other aspects of the application&#8217;s performance.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Hire Angular developer to upgrade your business application to the latest version of the frontend framework.<\/span><\/p>\n\n<div class=\"cta_section blue_gradient cta-section-2\">\n<div class=\"container\">\n<div class=\"image-right\">\n\t\t<img src=\"https:\/\/www.nethues.com\/blog\/app\/uploads\/2021\/07\/Outsource1-01-01.png\"alt=\"user-flow\" width=\"105\" height=\"104\" >\n\t\t<\/div>\n<div class=\"text-left\">\n<div class=\"cta-h2\" style=\"color: #fff;margin-top: 15px;\">Take Your Ecommerce to the Next Level<\/div>\n<\/div>\n\n<div class=\"counter-flex\">\n\t\t\t<div class=\"counter-box\">\n\t\t\t\t\t\t<h4><span class=\"count\">2500<\/span>+<\/h4>\t\t\t\t\t\t\t\t\t\t\t\t<p>Project Launched<\/p>\t\t\t<\/div>\n\t\t\t<div class=\"counter-box\">\n\t\t\t\t\t\t\t<h4><span class=\"count\">20<\/span>+<\/h4>\t\t\t\t\t\t\t<p>Years of Experience<\/p>\t\t\t<\/div>\n\t\t\t<div class=\"counter-box\">\n\t\t\t\t\t\t\t<h4><span class=\"count\">250<\/span>+<\/h4>\t\t\t\t\t\t\t<p>Skilled Professionals<\/p>\t\t\t<\/div>\n\t\t\t<div class=\"counter-box\">\n\t\t\t\t\t\t\t<h4><span class=\"count\">60<\/span>+<\/h4>\t\t\t\t\t\t\t<p>Days of Free Support<\/p>\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\n\t\t\n<div class=\"default_btn blog-cta-btn margTbtn\">\n\t<a class=\"orange_gradient btn-cta-blog\" href=\"https:\/\/www.nethues.com\/contact\">Hire Magento Developers<\/a><\/a>\n\t\t\t\t\t<\/div>\n\n\n<\/div>\n\t\n<\/div>\n\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Angular, the fifth most popular web framework with 20.39% popularity as per Statista, has come up with a new &amp; exciting version 15. The angular&#8230;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":10,"featured_media":2886,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"blog-two-sidebar.php","format":"standard","meta":[],"categories":[127],"tags":[311,74,312,317,332],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Angular 15 is Live Now: Explore New Features, Code Practice<\/title>\n<meta name=\"description\" content=\"The angular v15 is live and has been rolled out for the masses. The new release will make remarkable contributions to the digital development world.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.nethues.com\/blog\/angular-15-is-live-now\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Angular 15 is Live Now: Explore New Features, Code Practice\" \/>\n<meta property=\"og:description\" content=\"The angular v15 is live and has been rolled out for the masses. The new release will make remarkable contributions to the digital development world.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.nethues.com\/blog\/angular-15-is-live-now\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-09T10:32:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-19T09:42:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.nethues.com\/blog\/app\/uploads\/2022\/12\/Nethues-Blog-Image-Angular-15-Live-Now4-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1344\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Himanshu Rehani\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Himanshu Rehani\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Angular 15 is Live Now: Explore New Features, Code Practice","description":"The angular v15 is live and has been rolled out for the masses. The new release will make remarkable contributions to the digital development world.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.nethues.com\/blog\/angular-15-is-live-now\/","og_locale":"en_US","og_type":"article","og_title":"Angular 15 is Live Now: Explore New Features, Code Practice","og_description":"The angular v15 is live and has been rolled out for the masses. The new release will make remarkable contributions to the digital development world.","og_url":"https:\/\/www.nethues.com\/blog\/angular-15-is-live-now\/","article_published_time":"2022-12-09T10:32:13+00:00","article_modified_time":"2023-09-19T09:42:40+00:00","og_image":[{"width":2560,"height":1344,"url":"https:\/\/www.nethues.com\/blog\/app\/uploads\/2022\/12\/Nethues-Blog-Image-Angular-15-Live-Now4-scaled.jpg","type":"image\/jpeg"}],"author":"Himanshu Rehani","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Himanshu Rehani","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.nethues.com\/blog\/angular-15-is-live-now\/","url":"https:\/\/www.nethues.com\/blog\/angular-15-is-live-now\/","name":"Angular 15 is Live Now: Explore New Features, Code Practice","isPartOf":{"@id":"https:\/\/www.nethues.com\/blog\/#website"},"datePublished":"2022-12-09T10:32:13+00:00","dateModified":"2023-09-19T09:42:40+00:00","author":{"@id":"https:\/\/www.nethues.com\/blog\/#\/schema\/person\/ab46a9b65922dd757e441e13b59df073"},"description":"The angular v15 is live and has been rolled out for the masses. The new release will make remarkable contributions to the digital development world.","breadcrumb":{"@id":"https:\/\/www.nethues.com\/blog\/angular-15-is-live-now\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.nethues.com\/blog\/angular-15-is-live-now\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.nethues.com\/blog\/angular-15-is-live-now\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.nethues.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Angular 15 is Live Now: Explore New Features, Code Practices, &#038; Concerned Deprecations"}]},{"@type":"WebSite","@id":"https:\/\/www.nethues.com\/blog\/#website","url":"https:\/\/www.nethues.com\/blog\/","name":"","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.nethues.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.nethues.com\/blog\/#\/schema\/person\/ab46a9b65922dd757e441e13b59df073","name":"Himanshu Rehani","description":"Holding the position of a software developer, Himanshu started off his career with Nethues five years back. Since then, he has put in every effort to learn and grow into a full-fledged developer.","url":"https:\/\/www.nethues.com\/blog\/author\/himanshurehani\/"}]}},"_links":{"self":[{"href":"https:\/\/www.nethues.com\/blog\/wp-json\/wp\/v2\/posts\/2882"}],"collection":[{"href":"https:\/\/www.nethues.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nethues.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nethues.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nethues.com\/blog\/wp-json\/wp\/v2\/comments?post=2882"}],"version-history":[{"count":9,"href":"https:\/\/www.nethues.com\/blog\/wp-json\/wp\/v2\/posts\/2882\/revisions"}],"predecessor-version":[{"id":3813,"href":"https:\/\/www.nethues.com\/blog\/wp-json\/wp\/v2\/posts\/2882\/revisions\/3813"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nethues.com\/blog\/wp-json\/wp\/v2\/media\/2886"}],"wp:attachment":[{"href":"https:\/\/www.nethues.com\/blog\/wp-json\/wp\/v2\/media?parent=2882"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nethues.com\/blog\/wp-json\/wp\/v2\/categories?post=2882"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nethues.com\/blog\/wp-json\/wp\/v2\/tags?post=2882"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}