{"id":3016,"date":"2024-09-30T10:00:30","date_gmt":"2024-09-30T08:00:30","guid":{"rendered":"https:\/\/www.thecodecampus.de\/blog\/?p=3016"},"modified":"2025-04-22T10:14:44","modified_gmt":"2025-04-22T08:14:44","slug":"migrate-easily-to-angular-signals","status":"publish","type":"post","link":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/","title":{"rendered":"Angular Signals Part 4 &#8211; Migrate easily to Signals"},"content":{"rendered":"<p><strong><em>Klicke\u00a0<a href=\"https:\/\/www.thecodecampus.de\/blog\/ganz-einfach-zu-angular-signals-migrieren\/\">hier<\/a>\u00a0f\u00fcr die deutsche Version des Blog-Posts.<\/em><\/strong><\/p>\n<h2>Make your life easier and migrate to Signals with Angular 17<\/h2>\n<p>In the first three parts of this series <a href=\"https:\/\/www.thecodecampus.de\/blog\/angular-signals-part-1\/\">Angular Signals Part 1 \u2013 How-to Guide on Angular Signals<\/a>, <a href=\"https:\/\/www.thecodecampus.de\/blog\/how-to-combine-angular-signals-and-rxjs\/\">Angular Signals Part 2 \u2013 How to combine Angular Signals and RxJS<\/a>\u00a0and <a href=\"https:\/\/www.thecodecampus.de\/blog\/what-advantages-have-angular-signal-inputs\/\">Angular Signals Part 3 \u2013 What are the advantages of Signal Inputs<\/a> we looked at what Signals are, how to combine them with RxJS and what the advantages of Signal Inputs are. This time we want to show you how old Angular code can be easily migrated to Signals with the help of ngxtension so that you can take advantage of Signals as quickly as possible.<\/p>\n<p>In recent years, Angular has continued to evolve to provide developers with more powerful and efficient tools. An important step in this evolution is the introduction of Angular Signals in Angular 17, which allows developers to manage reactive state in a more intuitive and efficient way. However, the question for many is how to seamlessly migrate your legacy Angular code to Angular Signals without disrupting the development flow.<\/p>\n<p>This is where extensions come into play that simplify and accelerate this migration. In this article, we will introduce you to ngxtension and two extensions that helped us a lot during the migration and with which we were able to migrate to the new signal-based paradigm in an efficient and structured manner.<\/p>\n<h2>Ngxtension<\/h2>\n<p><a href=\"https:\/\/ngxtension.netlify.app\/\">Ngxtension<\/a> is a framework and library for Angular that aims to simplify the development of Angular applications. It offers various extensions, utility functions and tools that make it easier to work with Angular components, services and modules. To use ngxtension in your projects, you can add it e.g. via the Angular CLI or install it with npm.<\/p>\n<p>Command for Angular CLI:<\/p>\n<pre class=\"lang:default decode:true\">ng add ngxtension<\/pre>\n<p>npm command:<\/p>\n<pre class=\"lang:default decode:true\">npm install ngxtension<\/pre>\n<p>Now that ngxtension is installed, let&#8217;s take a closer look at the migration of inputs and outputs. Manually migrating inputs and outputs to the new <code>input()<\/code> and <code>output()<\/code> functions can be a tedious and error-prone task. Fortunately, this process is almost completely automated through the use of ngxtension.<\/p>\n<p><a href=\"https:\/\/www.thecodecampus.de\/schulungen\/angular\" style=\"display: inline-block;\">\n<picture><source srcset=\"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/schulungen-tcc_sascha_WP_big.png\" media=\"(min-width: 1024px)\"><source srcset=\"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/schulungen-tcc_sascha_WP_medium.png\" media=\"(min-width: 600px)\"><img decoding=\"async\" src=\"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/schulungen-tcc_sascha_WP_small.png\" alt=\"Angular Schulungen\" class=\"alignnone size-full wp-image-38\">\n<\/picture>\n<\/a><\/p>\n<h2>Use ngxtension to migrate @Input to Signal Inputs<\/h2>\n<p>With Angular v17.1, Signal Inputs were released and have since allowed us developers to use more declarative and reactive code patterns. For this reason, ngxtensions publishes schematics that take over the code migration for us. Among other things<\/p>\n<ul>\n<li>the same names are retained for the inputs.<\/li>\n<li>the same types and default values are retained.<\/li>\n<li>the component templates are updated to use the new signal inputs.<\/li>\n<\/ul>\n<p>You can also find more information in the documentation on <a href=\"https:\/\/ngxtension.netlify.app\/utilities\/migrations\/signal-inputs-migration\/\">Signal Inputs Migration<\/a> from ngxtension.<\/p>\n<p>With the following command you can migrate your old <code>@Inputs()<\/code> to Signal Inputs:<\/p>\n<pre class=\"lang:default decode:true\">ng g ngxtension:convert-signal-inputs\r\n<\/pre>\n<h3>What exactly does the Signal Inputs Migration do?<\/h3>\n<p>Here are some examples to give you an overview and better understanding of the differences before and after the migration of the inputs with ngxtension. In addition to a normal input, we have also listed an input with an alias and a default, i.e. an initial value.<\/p>\n<h4>Normal input:<\/h4>\n<p>Before:<\/p>\n<pre class=\"lang:ts decode:true\">@Input() value: string;\r\n<\/pre>\n<p>After:<\/p>\n<pre class=\"lang:ts decode:true\">value = input&lt;string&gt;();\r\n<\/pre>\n<h4>Input with alias:<\/h4>\n<p>Before:<\/p>\n<pre class=\"lang:ts decode:true\">@Input('value') valueAlias: string;\r\n<\/pre>\n<p>After:<\/p>\n<pre class=\"lang:ts decode:true\">value = input&lt;string&gt;({ alias: 'value' });\r\n<\/pre>\n<h4>Input with default value:<\/h4>\n<p>Before:<\/p>\n<pre class=\"lang:ts decode:true\">@Input() value: string = 'default';\r\n<\/pre>\n<p>After:<\/p>\n<pre class=\"lang:ts decode:true\">value = input&lt;string&gt;({ initialValue: 'default' });\r\n<\/pre>\n<h2>Use ngxtension to migrate @Output<\/h2>\n<p>The new <code>output()<\/code> function was introduced in Angular v17.3. Similar to the <code>input()<\/code> function for generating signal inputs, the <code>output()<\/code> function can be used to generate outputs without a decorator. Ngxtension has published special schematics that automate the migration of the code.<\/p>\n<p>When the schema is executed, it searches for all decorators that are outputs and converts them into function-based outputs. This time as well<\/p>\n<ul>\n<li>the same name is retained for the outputs.<\/li>\n<li>the same types are retained.<\/li>\n<li>the same alias is kept if it is available.<\/li>\n<\/ul>\n<p>You can also find more information in the documentation on the <a href=\"https:\/\/ngxtension.netlify.app\/utilities\/migrations\/new-outputs-migration\/\">New output() migration<\/a> of ngxtension.<\/p>\n<p>Use the following command to start the migration of the <code>@Output<\/code> functions:<\/p>\n<pre class=\"lang:default decode:true\">ng g ngxtension:convert-outputs\r\n<\/pre>\n<h3>What exactly does the output() migration do?<\/h3>\n<p>Here, too, we have two examples to give you an overview and a better understanding of the differences before and after migration with ngxtension.<\/p>\n<h4>Normal output:<\/h4>\n<p>Before:<\/p>\n<pre class=\"lang:ts decode:true\">@Output() change = new EventEmitter&lt;string&gt;();<\/pre>\n<p>After:<\/p>\n<pre class=\"lang:ts decode:true\">change: EventEmitter&lt;string&gt; = output&lt;string&gt;();<\/pre>\n<h4>Output with alias:<\/h4>\n<p>Before:<\/p>\n<pre class=\"lang:ts decode:true\">@Output('change') changeAlias = new EventEmitter&lt;string&gt;();<\/pre>\n<p>After:<\/p>\n<pre class=\"lang:ts decode:true \">change: EventEmitter&lt;string&gt; = output&lt;string&gt;({ alias: 'change' });<\/pre>\n<h2>What comes next?<\/h2>\n<p>Now that our code is up to date, we want to tackle a somewhat bigger task in the <a href=\"https:\/\/www.thecodecampus.de\/blog\/work-better-with-signals-directives\/\">next article<\/a> in this series. We will show you step by step how to refactor a custom directive to use Signal Inputs, explain which points you need to pay particular attention to and what advantages this offers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the first three parts of this series we looked at what Signals is, how to combine them with RxJS and what the advantages of Signal Inputs are. This time we want to show you how old Angular code can be easily migrated to Signals with the help of ngxtension so that you can take advantage of Signals as quickly as possible.<\/p>\n","protected":false},"author":40,"featured_media":3123,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[73,164,163,168,169,151,162,167,79],"tags":[112,170,172,181,171,26,175,182,83],"class_list":["post-3016","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-angular","category-angular-17","category-angular-performance-optimization","category-angular-signals","category-change-detection","category-optimization","category-performance","category-signals","category-tooling","tag-angular","tag-angular-17","tag-angular-change-detection","tag-angular-performance-optimization","tag-angular-signals","tag-migration","tag-reactive-programming","tag-signals","tag-tooling"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Migrate easily to Angular Signals<\/title>\n<meta name=\"description\" content=\"Find out now how you can easily migrate your inputs to Angular Signals and how ngxtension can also help you with outputs\" \/>\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.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrate easily to Angular Signals\" \/>\n<meta property=\"og:description\" content=\"Find out now how you can easily migrate your inputs to Angular Signals and how ngxtension can also help you with outputs\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Development tips and tricks - theCodeCampus Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-30T08:00:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-22T08:14:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/11\/angular-signals-migration.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Marc Dommr\u00f6se\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marc Dommr\u00f6se\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/\"},\"author\":{\"name\":\"Marc Dommr\u00f6se\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#\\\/schema\\\/person\\\/be8c4fcd8229783d0e9442dad8764770\"},\"headline\":\"Angular Signals Part 4 &#8211; Migrate easily to Signals\",\"datePublished\":\"2024-09-30T08:00:30+00:00\",\"dateModified\":\"2025-04-22T08:14:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/\"},\"wordCount\":734,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/angular-signals-migration.png\",\"keywords\":[\"Angular\",\"Angular 17\",\"Angular Change Detection\",\"Angular Performance Optimization\",\"Angular Signals\",\"Migration\",\"Reactive Programming\",\"Signals\",\"Tooling\"],\"articleSection\":[\"Angular\",\"Angular 17\",\"Angular Performance Optimization\",\"Angular Signals\",\"Change Detection\",\"Optimization\",\"Performance\",\"Signals\",\"Tooling\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/\",\"name\":\"Migrate easily to Angular Signals\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/angular-signals-migration.png\",\"datePublished\":\"2024-09-30T08:00:30+00:00\",\"dateModified\":\"2025-04-22T08:14:44+00:00\",\"description\":\"Find out now how you can easily migrate your inputs to Angular Signals and how ngxtension can also help you with outputs\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/angular-signals-migration.png\",\"contentUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/angular-signals-migration.png\",\"width\":1200,\"height\":1200,\"caption\":\"Angular Signals Part 4 - Migration\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/migrate-easily-to-angular-signals\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Angular Signals Part 4 &#8211; Migrate easily to Signals\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/\",\"name\":\"Web Development tips and tricks - theCodeCampus Blog\",\"description\":\"Tips, tricks, and experiences about developing web and mobile applications with Angular, TypeScript, and Testing.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#organization\",\"name\":\"theCodeCampus\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/TCC-Logo-Bildmarke-quadratisch.jpg\",\"contentUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/TCC-Logo-Bildmarke-quadratisch.jpg\",\"width\":156,\"height\":156,\"caption\":\"theCodeCampus\"},\"image\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#\\\/schema\\\/person\\\/be8c4fcd8229783d0e9442dad8764770\",\"name\":\"Marc Dommr\u00f6se\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/cropped-marc-dommroese-tcc-author-96x96.png\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/cropped-marc-dommroese-tcc-author-96x96.png\",\"contentUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/cropped-marc-dommroese-tcc-author-96x96.png\",\"caption\":\"Marc Dommr\u00f6se\"},\"description\":\"My name is Marc. I'm currently studying Computer Science at university, with one of my favorite topics being frontend development.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/marc-dommr\u00f6se-372a88318\\\/\"],\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/author\\\/mdommroese\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Migrate easily to Angular Signals","description":"Find out now how you can easily migrate your inputs to Angular Signals and how ngxtension can also help you with outputs","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.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/","og_locale":"en_US","og_type":"article","og_title":"Migrate easily to Angular Signals","og_description":"Find out now how you can easily migrate your inputs to Angular Signals and how ngxtension can also help you with outputs","og_url":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/","og_site_name":"Web Development tips and tricks - theCodeCampus Blog","article_published_time":"2024-09-30T08:00:30+00:00","article_modified_time":"2025-04-22T08:14:44+00:00","og_image":[{"width":1200,"height":1200,"url":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/11\/angular-signals-migration.png","type":"image\/png"}],"author":"Marc Dommr\u00f6se","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marc Dommr\u00f6se","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/#article","isPartOf":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/"},"author":{"name":"Marc Dommr\u00f6se","@id":"https:\/\/www.thecodecampus.de\/blog\/#\/schema\/person\/be8c4fcd8229783d0e9442dad8764770"},"headline":"Angular Signals Part 4 &#8211; Migrate easily to Signals","datePublished":"2024-09-30T08:00:30+00:00","dateModified":"2025-04-22T08:14:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/"},"wordCount":734,"commentCount":0,"publisher":{"@id":"https:\/\/www.thecodecampus.de\/blog\/#organization"},"image":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/#primaryimage"},"thumbnailUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/11\/angular-signals-migration.png","keywords":["Angular","Angular 17","Angular Change Detection","Angular Performance Optimization","Angular Signals","Migration","Reactive Programming","Signals","Tooling"],"articleSection":["Angular","Angular 17","Angular Performance Optimization","Angular Signals","Change Detection","Optimization","Performance","Signals","Tooling"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/","url":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/","name":"Migrate easily to Angular Signals","isPartOf":{"@id":"https:\/\/www.thecodecampus.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/#primaryimage"},"image":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/#primaryimage"},"thumbnailUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/11\/angular-signals-migration.png","datePublished":"2024-09-30T08:00:30+00:00","dateModified":"2025-04-22T08:14:44+00:00","description":"Find out now how you can easily migrate your inputs to Angular Signals and how ngxtension can also help you with outputs","breadcrumb":{"@id":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/#primaryimage","url":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/11\/angular-signals-migration.png","contentUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/11\/angular-signals-migration.png","width":1200,"height":1200,"caption":"Angular Signals Part 4 - Migration"},{"@type":"BreadcrumbList","@id":"https:\/\/www.thecodecampus.de\/blog\/migrate-easily-to-angular-signals\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.thecodecampus.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Angular Signals Part 4 &#8211; Migrate easily to Signals"}]},{"@type":"WebSite","@id":"https:\/\/www.thecodecampus.de\/blog\/#website","url":"https:\/\/www.thecodecampus.de\/blog\/","name":"Web Development tips and tricks - theCodeCampus Blog","description":"Tips, tricks, and experiences about developing web and mobile applications with Angular, TypeScript, and Testing.","publisher":{"@id":"https:\/\/www.thecodecampus.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.thecodecampus.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.thecodecampus.de\/blog\/#organization","name":"theCodeCampus","url":"https:\/\/www.thecodecampus.de\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.thecodecampus.de\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/01\/TCC-Logo-Bildmarke-quadratisch.jpg","contentUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/01\/TCC-Logo-Bildmarke-quadratisch.jpg","width":156,"height":156,"caption":"theCodeCampus"},"image":{"@id":"https:\/\/www.thecodecampus.de\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.thecodecampus.de\/blog\/#\/schema\/person\/be8c4fcd8229783d0e9442dad8764770","name":"Marc Dommr\u00f6se","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/09\/cropped-marc-dommroese-tcc-author-96x96.png","url":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/09\/cropped-marc-dommroese-tcc-author-96x96.png","contentUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/09\/cropped-marc-dommroese-tcc-author-96x96.png","caption":"Marc Dommr\u00f6se"},"description":"My name is Marc. I'm currently studying Computer Science at university, with one of my favorite topics being frontend development.","sameAs":["https:\/\/www.linkedin.com\/in\/marc-dommr\u00f6se-372a88318\/"],"url":"https:\/\/www.thecodecampus.de\/blog\/author\/mdommroese\/"}]}},"_links":{"self":[{"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/posts\/3016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/comments?post=3016"}],"version-history":[{"count":28,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/posts\/3016\/revisions"}],"predecessor-version":[{"id":3415,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/posts\/3016\/revisions\/3415"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/media\/3123"}],"wp:attachment":[{"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/media?parent=3016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/categories?post=3016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/tags?post=3016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}