{"id":665,"date":"2023-03-16T05:00:00","date_gmt":"2023-03-16T12:00:00","guid":{"rendered":"https:\/\/www.angulartraining.com\/daily-newsletter\/?p=665"},"modified":"2023-03-15T18:01:50","modified_gmt":"2023-03-16T01:01:50","slug":"the-inject-function","status":"publish","type":"post","link":"https:\/\/www.angulartraining.com\/daily-newsletter\/the-inject-function\/","title":{"rendered":"The inject() function"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Next in our <a href=\"https:\/\/www.angulartraining.com\/daily-newsletter\/category\/angular\/dependency-injection\/\" target=\"_blank\" rel=\"noopener\" title=\"\">dependency injection series<\/a> is the <code><a href=\"https:\/\/angular.io\/api\/core\/inject\" target=\"_blank\" rel=\"noopener\" title=\"\">inject()<\/a><\/code> function. You&#8217;re probably familiar with injecting services using class constructors as follows:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-24.png\" alt=\"\" class=\"wp-image-667\" width=\"481\" height=\"143\" srcset=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-24.png 974w, https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-24-300x90.png 300w, https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-24-768x230.png 768w\" sizes=\"auto, (max-width: 481px) 100vw, 481px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We can also use the <code>inject<\/code> function to do the same:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-25.png\" alt=\"\" class=\"wp-image-668\" width=\"475\" height=\"162\" srcset=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-25.png 766w, https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-25-300x102.png 300w\" sizes=\"auto, (max-width: 475px) 100vw, 475px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>inject<\/code> function can be used in 3 different places. We can use it when initializing the field of an &#8220;Angular&#8221; class (component\/service\/pipe\/directive\/module) or in the body of the constructor of such a class:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-26.png\" alt=\"\" class=\"wp-image-669\" width=\"406\" height=\"343\" srcset=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-26.png 642w, https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-26-300x253.png 300w\" sizes=\"auto, (max-width: 406px) 100vw, 406px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Or it can be used in a <a href=\"https:\/\/www.angulartraining.com\/daily-newsletter\/conditional-dependency-injection\/\" target=\"_blank\" rel=\"noopener\" title=\"\">provider factory function<\/a> (see <a href=\"https:\/\/www.angulartraining.com\/daily-newsletter\/conditional-dependency-injection\/\" target=\"_blank\" rel=\"noopener\" title=\"\">yesterday&#8217;s post<\/a> as an example):<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-27.png\" alt=\"\" class=\"wp-image-670\" width=\"412\" height=\"204\" srcset=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-27.png 684w, https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-27-300x148.png 300w\" sizes=\"auto, (max-width: 412px) 100vw, 412px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For now, we can consider that function as a syntax alternative. That said, we must start using it as soon as possible because <a href=\"https:\/\/github.com\/angular\/angular\/pull\/47924\" target=\"_blank\" rel=\"noopener\" title=\"\">router class guards have been deprecated in Angular 15.2<\/a>. And the alternative is functional guards that might need dependencies injected &#8211; using the <code>inject<\/code> function:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-28-1024x174.png\" alt=\"\" class=\"wp-image-671\" width=\"563\" height=\"95\" srcset=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-28-1024x174.png 1024w, https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-28-300x51.png 300w, https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-28-768x131.png 768w, https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/03\/image-28.png 1092w\" sizes=\"auto, (max-width: 563px) 100vw, 563px\" \/><\/figure>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Next in our dependency injection series is the inject() function. You&#8217;re probably familiar with injecting services using class constructors as follows: We can also use the inject function to do the same: The inject function can be used in 3 different places. We can use it when initializing the field of an &#8220;Angular&#8221; class (component\/service\/pipe\/directive\/module) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,26],"tags":[],"class_list":["post-665","post","type-post","status-publish","format-standard","hentry","category-angular","category-dependency-injection"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/665","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=665"}],"version-history":[{"count":2,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/665\/revisions"}],"predecessor-version":[{"id":672,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/665\/revisions\/672"}],"wp:attachment":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/media?parent=665"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/categories?post=665"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/tags?post=665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}