{"id":2255,"date":"2025-01-15T14:46:55","date_gmt":"2025-01-15T22:46:55","guid":{"rendered":"https:\/\/www.angulartraining.com\/daily-newsletter\/?p=2255"},"modified":"2025-01-15T14:46:55","modified_gmt":"2025-01-15T22:46:55","slug":"angular-19-1-is-available","status":"publish","type":"post","link":"https:\/\/www.angulartraining.com\/daily-newsletter\/angular-19-1-is-available\/","title":{"rendered":"Angular 19.1 is available!"},"content":{"rendered":"\n<p>This week, we&#8217;re using the 3-2-1 format of the newsletter once more. I\u2019m posting a few essential articles to revisit, updates to know about, and one question to ponder:<\/p>\n\n\n\n<p><strong>Three short articles to revisit:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/blog.angulartraining.com\/http-interceptors-in-angular-61dcf80b6bdd\" target=\"_blank\" rel=\"noopener\" title=\"\">HTTP interceptors<\/a> can be used in several ways to assist with authentication, refactoring code, caching data, and more! Read more about them with <a href=\"https:\/\/blog.angulartraining.com\/http-interceptors-in-angular-61dcf80b6bdd\" target=\"_blank\" rel=\"noopener\" title=\"\">this tutorial<\/a>.<\/li>\n\n\n\n<li>Just like <a href=\"https:\/\/www.angulartraining.com\/daily-newsletter\/route-guards-canactivate-canactivatechild-candeactivate\/\" target=\"_blank\" rel=\"noopener\" title=\"\">guards and resolvers<\/a>, HTTP interceptors can also be <a href=\"https:\/\/angular.dev\/api\/common\/http\/HttpInterceptorFn?tab=usage-notes\" target=\"_blank\" rel=\"noopener\" title=\"\">declared as functions<\/a>.<\/li>\n<\/ul>\n\n\n\n<p><strong>Two Angular updates:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/angular\/angular\/releases\/tag\/19.1.0\" target=\"_blank\" rel=\"noopener\" title=\"\">Angular 19.1<\/a> is now available! The most interesting addition is a new CLI command to automatically <a href=\"https:\/\/github.com\/angular\/angular\/pull\/59353\" target=\"_blank\" rel=\"noopener\" title=\"\">clean-up unused imports<\/a>: <code>ng g @angular\/core:cleanup-unused-imports<\/code><\/li>\n\n\n\n<li>Another interesting update is the support for <a href=\"https:\/\/github.com\/angular\/angular\/pull\/58609\" target=\"_blank\" rel=\"noopener\" title=\"\">Typescript 5.7<\/a> added to Angular 19.1. More <a href=\"https:\/\/devblogs.microsoft.com\/typescript\/announcing-typescript-5-7\/\" target=\"_blank\" rel=\"noopener\" title=\"\">info about Typescript 5.7 here<\/a>.<\/li>\n<\/ul>\n\n\n\n<p><strong>One question to think about:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Do you call methods in your Angular component templates sometimes? If so, <a href=\"https:\/\/www.angulartraining.com\/daily-newsletter\/anti-pattern-series-calling-a-method-in-a-template\/\" target=\"_blank\" rel=\"noopener\" title=\"\">check this out to consider a better alternative<\/a>.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week, we&#8217;re using the 3-2-1 format of the newsletter once more. I\u2019m posting a few essential articles to revisit, updates to know about, and one question to ponder: Three short articles to revisit: Two Angular updates: One question to think about:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-2255","post","type-post","status-publish","format-standard","hentry","category-angular"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/2255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/comments?post=2255"}],"version-history":[{"count":1,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/2255\/revisions"}],"predecessor-version":[{"id":2256,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/2255\/revisions\/2256"}],"wp:attachment":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/media?parent=2255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/categories?post=2255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/tags?post=2255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}