{"id":2770,"date":"2024-02-14T09:19:59","date_gmt":"2024-02-14T08:19:59","guid":{"rendered":"https:\/\/www.thecodecampus.de\/blog\/?p=2770"},"modified":"2026-04-09T11:23:00","modified_gmt":"2026-04-09T09:23:00","slug":"mit-angular-signals-effiziente-anwendungen-entwickeln","status":"publish","type":"post","link":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/","title":{"rendered":"Angular Signals Teil 1 &#8211; How-to Guide f\u00fcr Angular Signals"},"content":{"rendered":"<p><strong><em>Go <a href=\"https:\/\/www.thecodecampus.de\/blog\/angular-signals-part-1\/\">here<\/a> for the english version of this blog post.<\/em><\/strong><\/p>\n<h2>Verbesserung der Leistung in Angular 17 mit Signals: Eine kluge L\u00f6sung<\/h2>\n<p>In der Weiterentwicklung von Angular wird mit der Einf\u00fchrung von Signals ein einfacherer und effizienterer Ansatz zur Erkennung von \u00c4nderungen eingef\u00fchrt, der die Leistung und Reaktivit\u00e4t von Anwendungen grundlegend verbessert. Signals wurden bereits in Angular Version 16 als Developer Preview eingef\u00fchrt. Mit Angular 17 wird das Feature in einer stabilen Version ver\u00f6ffentlicht. Im Gegensatz zur umfassenden Scanning-Strategie von Zone.js, die den gesamten Komponentenbaum auf \u00c4nderungen pr\u00fcft, setzen Signals eine gezieltere Methode ein. Sie aktualisieren direkt nur die Komponenten, die von den Zustands\u00e4nderungen betroffen sind, was den unn\u00f6tigen Leistungsaufwand erheblich reduziert.<\/p>\n<p>Dieser Wechsel optimiert nicht nur die Change Detection von Angular, sondern entspricht auch einem intuitiveren Modell der Reaktivit\u00e4t, das sowohl die Entwicklungserfahrung als auch die Reaktionsf\u00e4higkeit des Frameworks verbessert. Durch Signals erhalten Angular-Entwickler Zugang zu einem pr\u00e4ziseren und effizienteren Toolset f\u00fcr die Verwaltung von Zustands\u00e4nderungen, was einen bedeutenden Schritt nach vorne bei der F\u00e4higkeit des Frameworks darstellt, dynamische und komplexe Anwendungen mit Leichtigkeit zu handhaben.<\/p>\n<p>Durch die Bereitstellung eines effizienteren, gezielteren und vereinfachten Modells der Reaktivit\u00e4t erm\u00f6glichen Signals Angular-Anwendungen ein h\u00f6heres Leistungsniveau und bieten Entwicklern ein schlankeres und effektiveres Toolset f\u00fcr die Erstellung dynamischer, reaktionsf\u00e4higer Anwendungen.<\/p>\n<p>Im folgenen Blog erf\u00e4hrst du wie du mit Angular Signals effiziente Anwendungen entwickeln kannst.<\/p>\n<h2>Welches Problem wird durch Signals gel\u00f6st?<\/h2>\n<p>Angular Signals wurden entwickelt, um die Laufzeitleistung von Anwendungen zu verbessern, indem Zone.js ersetzt wird. Traditionell spielte Zone.js eine entscheidende Rolle bei der Aktivierung der Change Detection und der Aktualisierung der Benutzeroberfl\u00e4che, wenn sich der Zustand der Anwendung \u00e4nderte. Diese Methode erforderte allerdings das Scannen des gesamten Komponentenbaums, um relevante Zustands\u00e4nderungen zu identifizieren. Durch die redundante Pr\u00fcfung inaktiver Komponenten kam es h\u00e4ufig zu Performanceproblemen.<\/p>\n<p>Mit der Einf\u00fchrung von Signals werden die umfassenden Scans des Komponentenbaums \u00fcberfl\u00fcssig. Jetzt werden nur noch die Komponenten aktualisiert, die direkt von einer \u00c4nderung betroffen sind, wodurch der DOM-Aktualisierungsprozess erheblich vermindert wird. Diese fokussierte Strategie minimiert nicht nur den Systemaufwand, sondern steigert auch die Gesamteffizienz der Anwendung. So lassen sich mit Angular Signals effizientere Anwendungen entwickeln als zuvor.<\/p>\n<p>Neben der Leistungsverbesserung vereinfachen die Angular Signals auch das State Management und bieten eine intuitivere Alternative zu RxJS, insbesondere beim Ersetzen von subjektbasierten Zust\u00e4nden. RxJS kann, mit seinen leistungsstarken, aber komplexen Tools f\u00fcr die reaktive Programmierung, f\u00fcr Entwickler eine Herausforderung darstellen, insbesondere wenn es um die Verwaltung des Anwendungsstatus durch Subjects geht. Subjects in RxJS sind zwar flexibel, erfordern aber ein tieferes Verst\u00e4ndnis von Konzepten der reaktiven Programmierung, wie Observables und Subscriber, was sie f\u00fcr Anf\u00e4nger oder einfachere Anwendungen weniger zug\u00e4nglich macht.<\/p>\n<p>Im Gegensatz dazu bieten Signals einen unkomplizierten Mechanismus f\u00fcr das State Management. Sie vermeiden die steile Lernkurve, die mit RxJS verbunden ist, indem sie einen einfacheren, direkteren Ansatz bieten. Entwickler k\u00f6nnen einen State definieren und ihn direkt mit den UI-Komponenten verkn\u00fcpfen, wobei die Komplexit\u00e4t von Observable Streams umgangen wird. Diese direkte Verkn\u00fcpfung vereinfacht den Prozess der Aktualisierung der Benutzeroberfl\u00e4che als Reaktion auf Zustands\u00e4nderungen, da keine Subscriptions verwaltet oder Datenstr\u00f6me verarbeitet werden m\u00fcssen. Mit Signals geht es beim State Management eher darum, Zustands\u00e4nderungen zu definieren und darauf zu reagieren, als mit den Feinheiten reaktiver Programmierparadigmen zu jonglieren.<\/p>\n<h2>Signals alias Reaktive Primitives<\/h2>\n<p>Signals, auch bekannt als Reactive Primitives, sind ein System, das die Verwendung und die Abh\u00e4ngigkeiten von Zust\u00e4nden bzw. States innerhalb einer Anwendung verfolgt und es Angular erm\u00f6glicht, Rendering-Updates zu optimieren. Mit Signals identifiziert Angular genau, wo welcher State verwendet wird und welche Abh\u00e4ngigkeiten bestehen. Dies erm\u00f6glicht ein gezieltes Re-Rendering von Komponenten, wodurch die Abh\u00e4ngigkeit zur Change Detection entf\u00e4llt, weil eine umfassende \u00dcberpr\u00fcfungen aller Komponenten nicht notwendig ist. Im Gegensatz zu Observables ben\u00f6tigen Signals keine Subscriptions und haben immer einen Anfangswert, was das State Management vereinfacht, da asynchrone Operationen, wie z.B. die async-Pipe, nicht mehr gebraucht werden.<\/p>\n<p>Signals sind durchg\u00e4ngig typisiert und k\u00f6nnen vom Typ Number oder String oder sogar ein komplexer Typ sein. Sie k\u00f6nnen writeable oder readonly sein und man kann immer ein readonly Signal aus einem writeable Signal mit <code>.asReadonly()<\/code> erzeugen. Readonly Signals k\u00f6nnen auch von writable Signales abh\u00e4ngen, aber darauf werden wir sp\u00e4ter noch eingehen.<\/p>\n<p>Es ist auch sehr einfach, Signals zu exportieren, um sie in mehreren Komponenten zu verwenden.<\/p>\n<pre class=\"\">export const name = signal('Angular');<\/pre>\n<pre class=\"\">import { name } from \"main\";<\/pre>\n<p><a style=\"display: inline-block;\" href=\"https:\/\/www.thecodecampus.de\/schulungen\/angular\">\n<picture><source srcset=\"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/weiter-entwickeln_frieder_WP_big.png\" media=\"(min-width: 1024px)\" \/><\/picture>\n<picture><source srcset=\"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/weiter-entwickeln_frieder_WP_medium.png\" media=\"(min-width: 600px)\" \/><\/picture>\n<picture><img decoding=\"async\" class=\"alignnone size-full wp-image-38\" src=\"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2025\/04\/weiter-entwickeln_frieder_WP_small.png\" alt=\"Angular Schulungen\" \/><\/picture>\n<\/a><\/p>\n<h2>Wie man mit Signals interagiert<\/h2>\n<p>Nachdem wir nun die Vorteile von Signals bei der Bew\u00e4ltigung g\u00e4ngiger Herausforderungen in der Angular-Entwicklung kennengelernt haben, ist es an der Zeit, tiefer zu gehen. Lass uns herausfinden, wie man sie effektiv nutzen kann und die verschiedenen Methoden untersuchen, die uns im Umgang mit Signals zur Verf\u00fcgung stehen.<\/p>\n<h3>signal()<\/h3>\n<p>Durch den Aufruf der <code>signal<\/code> Funktion kann man ein writeable Signal erstellen. In unserem Fall ist das ein Z\u00e4hler.<\/p>\n<pre class=\"lang:ts decode:true\">const counter = signal(0);<\/pre>\n<p>Wir k\u00f6nnen auf den Wert mit dem Variablennamen und runden Klammern zugreifen. Dies funktioniert auch im Template, wenn wir den Aufruf in einer Expression verwenden.<\/p>\n<pre class=\"lang:default decode:true\">console.log('New counter value', this.counter());<\/pre>\n<pre class=\"lang:default decode:true\">Count: {{ counter() }}<\/pre>\n<h3>set()<\/h3>\n<p>Mit <code>set<\/code> kann man dem Signal einen neuen Wert geben.<\/p>\n<pre class=\"lang:default decode:true\">this.counter.set(5);<\/pre>\n<p>Damit k\u00f6nnen wir den Z\u00e4hler auf Null zur\u00fccksetzen.<\/p>\n<pre class=\"lang:default decode:true\">reset() { \r\n  this.counter.set(0); \r\n};<\/pre>\n<h3>update()<\/h3>\n<p>Durch die Verwendung von <code>update<\/code> kann man auch den Wert des Signals \u00e4ndern, aber jetzt hat man auch Zugriff auf den aktuellen Wert. Man kann also einen neuen Wert basierend auf dem alten Wert setzen.<br \/>\nIn unserem Beispiel k\u00f6nnen wir dies f\u00fcr eine Inkrement- oder Dekrementfunktion verwenden.<\/p>\n<pre class=\"lang:default decode:true\">increment() { \r\n  this.counter.update((currentValue) =&gt; currentValue + 1); \r\n};<\/pre>\n<p>Die\u00a0<code>update<\/code> Funktion muss nicht unbedingt ein Einzeiler sein. Solange man einen R\u00fcckgabewert angibt, k\u00f6nnen verschiedene Operationen durchgef\u00fchrt werden.<\/p>\n<pre class=\"lang:default decode:true\">decrement() { \r\n    this.counter.update((currentValue) =&gt; \r\n    { console.log('Old value', currentValue); \r\n    const newValue = currentValue - 1; \r\n    return newValue; \r\n  }); \r\n};<\/pre>\n<h3>computed()<\/h3>\n<p>Um ein Signal zu erzeugen, das auf einem anderen Signal basiert oder von diesem abh\u00e4ngig ist, kann <code>computed<\/code> verwendet werden. Diese Funktion erzeugt ein readonly Signal, das sich selbst aktualisiert, wenn sich der Wert des Signals, von dem es abh\u00e4ngt, \u00e4ndert.<br \/>\nAls Beispiel werden wir eine Variable erstellen, die pr\u00fcft, ob der aktuelle Z\u00e4hler gerade oder ungerade ist. <code>isOdd<\/code> kann nicht durch die <code>set<\/code> oder <code>update<\/code> Funktion ge\u00e4ndert werden. Da Angular aber wei\u00df, dass es eine Abh\u00e4ngigkeit zwischen den beiden Signals gibt, wird jedes Mal, wenn sich das <code>counter<\/code> Signal \u00e4ndert, die Callback-Funktion von <code>isOdd<\/code> erneut ausgef\u00fchrt.<\/p>\n<pre class=\"lang:default decode:true\">const isOdd = computed(() =&gt; this.counter() % 2 !== 0);<\/pre>\n<p>Nat\u00fcrlich funktioniert dies auch mit zwei oder mehr Signals, von denen es abh\u00e4ngt. Jetzt wird <code>combined<\/code> jedes Mal aktualisiert, wenn sich entweder <code>firstLetter<\/code> oder <code>secondLetter<\/code> \u00e4ndert.<\/p>\n<pre class=\"lang:default decode:true\">const firstLetter = signal('a') \r\nconst secondLetter = signal('b') \r\nconst combined = computed(() =&gt; \r\n  this.firstLetter().concat(this.secondLetter()));<\/pre>\n<p>Wie die <code>update<\/code> Funktion muss <code>computed<\/code> kein Einzeiler sein. Jedoch muss man hier beachten, dass die Abh\u00e4ngigkeiten eines computed Signals nicht nur durch seinen R\u00fcckgabewert bestimmt werden. Im folgenden Beispiel verwendet <code>combined<\/code> nur noch <code>firstLetter<\/code> im return statement, wird aber immer noch aktualisiert, wenn sich der Wert von <code>secondLetter<\/code> \u00e4ndert, da das Signal in der Callback-Funktion von <code>combined<\/code> verwendet wird.<\/p>\n<pre class=\"lang:default decode:true\">const combined = computed(() =&gt; { \r\n  console.log('Second letter changed', this.secondLetter()); \r\n  return this.firstLetter().concat('c') \r\n});<\/pre>\n<h3>effect()<\/h3>\n<p>Mit <code>effect<\/code> kann man festlegen, was passieren soll, wenn sich der Wert eines Signals \u00e4ndert, oder anders gesagt, welche Seiteneffekte dadurch ausgel\u00f6st werden. Das kann das Loggen des Wertes eines Signals sein, das Exportieren des Wertes in den localStorage oder das transparente Speichern des Wertes in die Datenbank.<br \/>\nIn unserem Fall wollen wir nur den neuen Z\u00e4hlerwert auf der Konsole ausgeben.<\/p>\n<p>Standardm\u00e4\u00dfig erfordert die Registrierung eines neuen Effekts mit der <code>effect<\/code> Funktion einen Injektionskontext (Zugriff auf die <code>inject<\/code> Funktion). Am einfachsten ist es, <code>effect<\/code> innerhalb eines Komponenten-, Direktiven- oder Servicekonstruktors aufzurufen. Alternativ kann der Effekt auch einer Variablen zugewiesen werden (wodurch er auch einen beschreibenden Namen erh\u00e4lt).<\/p>\n<pre class=\"lang:default decode:true\">constructor() { \r\n    effect(() =&gt; { console.log('New counter value', this.counter()); \r\n  }); \r\n}<\/pre>\n<p>Wie die <code>computed<\/code> Funktion kann ein Effekt von mehreren Signals abh\u00e4ngig sein.<\/p>\n<pre class=\"lang:default decode:true\">const letterEffect = effect(() =&gt; console.log('Log letters', this.firstLetter(), this.secondLetter()));<\/pre>\n<h3>untracked()<\/h3>\n<p>Wenn man Signals in einer reaktiven Funktion wie <code>computed<\/code> oder <code>effect<\/code> lesen will, ohne eine Abh\u00e4ngigkeit zu schaffen, kann man das Signal mit der <code>untracked<\/code> Funktion aufrufen, um zu verhindern, dass ein Signal verfolgt wird.<\/p>\n<p>Nehmen wir den <code>letterEffect<\/code> von oben als Beispiel. Im Moment loggt der Effekt die aktuellen Buchstaben, wenn sich einer der beiden Signalwerte \u00e4ndert. Wenn der Effekt nur ausgel\u00f6st werden soll, wenn sich <code>firstLetter<\/code> \u00e4ndert, aber nicht, wenn sich <code>secondLetter<\/code> \u00e4ndert, k\u00f6nnen wir das Folgende schreiben:<\/p>\n<pre class=\"lang:default decode:true \">const specialEffect = effect(() =&gt; console.log('Special effect', this.firstLetter(), untracked(this.secondLetter)));<\/pre>\n<h2>Erfahrung ist der beste Lehrer: Hands-On mit Signals<\/h2>\n<p>Bist Du bereit, die Theorie in die Praxis umzusetzen? In diesem interaktiven StackBlitz-Beispiel haben wir eine Beispielanwendung erstellt, die die besprochenen Signal-Konzepte beinhaltet. Tauche ein und experimentiere, um Signals in Aktion zu erleben!<\/p>\n<p><iframe height=\"400\" style=\"width: 100%;\" src=\"https:\/\/stackblitz.com\/edit\/stackblitz-starters-m9kokr?embed=1&amp;file=src%2Fmain.ts\" scrolling=\"no\"><\/iframe><\/p>\n<h2>Anwendungsf\u00e4lle um mit Angular Signals effiziente Anwendungen zu entwickeln.<\/h2>\n<p>Signals sind gut geeignet, um einen synchronen Zustand in den Komponenten zu verwalten. Sie eignen sich nicht f\u00fcr Events und andere asynchrone Operationen. Daher sind Signals eine Erweiterung zu RxJS und kein Ersatz. Sie k\u00f6nnen eine Abl\u00f6sung f\u00fcr async-Pipes und OnPush-Komponenten sein, da Angular von selbst merkt, wenn sich etwas in der Komponente ge\u00e4ndert hat.<\/p>\n<p>Mehr \u00fcber die Verwendung von Signals und RxJS wird im <a href=\"https:\/\/www.thecodecampus.de\/blog\/wie-kombiniert-man-angular-signals-und-rxjs\/\">zweiten Teil<\/a> unserer Artikelserie zu Angular Signals behandelt.<\/p>\n<p>Wenn ein tieferes Verst\u00e4ndnis f\u00fcr die inneren Mechanismen und deren Nutzung von Angular signals zu erfahren, empfehlen wir die <a href=\"https:\/\/www.youtube.com\/watch?v=oqYQG7QMdzw\"> Videos von Deborah Kurata<\/a>. Sie erkl\u00e4rt extrem gut wie man mit Signals in Angular umgeht und was zu beachten ist.<\/p>\n<h2 id=\"Termin\u00fcbersicht\">Termin\u00fcbersicht der n\u00e4chsten Angular Schulungen<\/h2>\n<p><iframe height=\"600\" style=\"width: 100%;\" src=\"https:\/\/thecodecampus.de\/kalender\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der Weiterentwicklung von Angular wird mit der Einf\u00fchrung von Signals ein einfacherer und effizienterer Ansatz zur Erkennung von \u00c4nderungen eingef\u00fchrt, der die Leistung und Reaktivit\u00e4t von Anwendungen grundlegend verbessert. Signals wurden bereits in Angular Version 16 als Developer Preview eingef\u00fchrt. Mit Angular 17 [&#8230;]<\/p>\n","protected":false},"author":32,"featured_media":2763,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[73,164,163,168,169,151,162],"tags":[112,170,172,171,173,175,174,176],"class_list":["post-2770","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","tag-angular","tag-angular-17","tag-angular-change-detection","tag-angular-signals","tag-reactive-primitive","tag-reactive-programming","tag-rxjs","tag-state-management"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mit Angular Signals effiziente Anwendungen entwickeln.<\/title>\n<meta name=\"description\" content=\"&quot;Angular 17 Signals: Effiziente Anwendungen entwickeln mit verbesserter Leistung und reaktiver Change Detection. Entdecke jetzt das neue Signal Feature!&quot;\" \/>\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\/mit-angular-signals-effiziente-anwendungen-entwickeln\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mit Angular Signals effiziente Anwendungen entwickeln.\" \/>\n<meta property=\"og:description\" content=\"&quot;Angular 17 Signals: Effiziente Anwendungen entwickeln mit verbesserter Leistung und reaktiver Change Detection. Entdecke jetzt das neue Signal Feature!&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Development tips and tricks - theCodeCampus Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-14T08:19:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-09T09:23:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/02\/angular_signals_part_I_thumbnail.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1052\" \/>\n\t<meta property=\"og:image:height\" content=\"542\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Anne Naumann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Anne Naumann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/\"},\"author\":{\"name\":\"Anne Naumann\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#\\\/schema\\\/person\\\/d5533850d6a4d364e194500c24c0021a\"},\"headline\":\"Angular Signals Teil 1 &#8211; How-to Guide f\u00fcr Angular Signals\",\"datePublished\":\"2024-02-14T08:19:59+00:00\",\"dateModified\":\"2026-04-09T09:23:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/\"},\"wordCount\":1513,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/angular_signals_part_I_thumbnail.jpg\",\"keywords\":[\"Angular\",\"Angular 17\",\"Angular Change Detection\",\"Angular Signals\",\"Reactive Primitive\",\"Reactive Programming\",\"RxJS\",\"State Management\"],\"articleSection\":[\"Angular\",\"Angular 17\",\"Angular Performance Optimization\",\"Angular Signals\",\"Change Detection\",\"Optimization\",\"Performance\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/\",\"name\":\"Mit Angular Signals effiziente Anwendungen entwickeln.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/angular_signals_part_I_thumbnail.jpg\",\"datePublished\":\"2024-02-14T08:19:59+00:00\",\"dateModified\":\"2026-04-09T09:23:00+00:00\",\"description\":\"\\\"Angular 17 Signals: Effiziente Anwendungen entwickeln mit verbesserter Leistung und reaktiver Change Detection. Entdecke jetzt das neue Signal Feature!\\\"\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/angular_signals_part_I_thumbnail.jpg\",\"contentUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/angular_signals_part_I_thumbnail.jpg\",\"width\":1052,\"height\":542,\"caption\":\"Angular Signals I Thumbnail\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/mit-angular-signals-effiziente-anwendungen-entwickeln\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Angular Signals Teil 1 &#8211; How-to Guide f\u00fcr Angular 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\\\/d5533850d6a4d364e194500c24c0021a\",\"name\":\"Anne Naumann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/anne-naumann-tcc-author-96x96.webp\",\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/anne-naumann-tcc-author-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/anne-naumann-tcc-author-96x96.webp\",\"caption\":\"Anne Naumann\"},\"description\":\"Hi, I'm a web developer with a focus on frontend technologies, especially Angular. I also have a lot of fun when it comes to UI\\\/UX and when I need to make room for new books on my bookshelves.\",\"sameAs\":[\"https:\\\/\\\/thecodecampus.de\\\/ueber-uns\\\/trainer\\\/anne-naumann\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/anne-naumann-1ab635307\\\/\"],\"url\":\"https:\\\/\\\/www.thecodecampus.de\\\/blog\\\/author\\\/anaumann\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mit Angular Signals effiziente Anwendungen entwickeln.","description":"\"Angular 17 Signals: Effiziente Anwendungen entwickeln mit verbesserter Leistung und reaktiver Change Detection. Entdecke jetzt das neue Signal Feature!\"","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\/mit-angular-signals-effiziente-anwendungen-entwickeln\/","og_locale":"en_US","og_type":"article","og_title":"Mit Angular Signals effiziente Anwendungen entwickeln.","og_description":"\"Angular 17 Signals: Effiziente Anwendungen entwickeln mit verbesserter Leistung und reaktiver Change Detection. Entdecke jetzt das neue Signal Feature!\"","og_url":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/","og_site_name":"Web Development tips and tricks - theCodeCampus Blog","article_published_time":"2024-02-14T08:19:59+00:00","article_modified_time":"2026-04-09T09:23:00+00:00","og_image":[{"width":1052,"height":542,"url":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/02\/angular_signals_part_I_thumbnail.jpg","type":"image\/jpeg"}],"author":"Anne Naumann","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Anne Naumann","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/#article","isPartOf":{"@id":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/"},"author":{"name":"Anne Naumann","@id":"https:\/\/www.thecodecampus.de\/blog\/#\/schema\/person\/d5533850d6a4d364e194500c24c0021a"},"headline":"Angular Signals Teil 1 &#8211; How-to Guide f\u00fcr Angular Signals","datePublished":"2024-02-14T08:19:59+00:00","dateModified":"2026-04-09T09:23:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/"},"wordCount":1513,"commentCount":0,"publisher":{"@id":"https:\/\/www.thecodecampus.de\/blog\/#organization"},"image":{"@id":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/#primaryimage"},"thumbnailUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/02\/angular_signals_part_I_thumbnail.jpg","keywords":["Angular","Angular 17","Angular Change Detection","Angular Signals","Reactive Primitive","Reactive Programming","RxJS","State Management"],"articleSection":["Angular","Angular 17","Angular Performance Optimization","Angular Signals","Change Detection","Optimization","Performance"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/","url":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/","name":"Mit Angular Signals effiziente Anwendungen entwickeln.","isPartOf":{"@id":"https:\/\/www.thecodecampus.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/#primaryimage"},"image":{"@id":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/#primaryimage"},"thumbnailUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/02\/angular_signals_part_I_thumbnail.jpg","datePublished":"2024-02-14T08:19:59+00:00","dateModified":"2026-04-09T09:23:00+00:00","description":"\"Angular 17 Signals: Effiziente Anwendungen entwickeln mit verbesserter Leistung und reaktiver Change Detection. Entdecke jetzt das neue Signal Feature!\"","breadcrumb":{"@id":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/#primaryimage","url":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/02\/angular_signals_part_I_thumbnail.jpg","contentUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/02\/angular_signals_part_I_thumbnail.jpg","width":1052,"height":542,"caption":"Angular Signals I Thumbnail"},{"@type":"BreadcrumbList","@id":"https:\/\/www.thecodecampus.de\/blog\/mit-angular-signals-effiziente-anwendungen-entwickeln\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.thecodecampus.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Angular Signals Teil 1 &#8211; How-to Guide f\u00fcr Angular 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\/d5533850d6a4d364e194500c24c0021a","name":"Anne Naumann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/11\/anne-naumann-tcc-author-96x96.webp","url":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/11\/anne-naumann-tcc-author-96x96.webp","contentUrl":"https:\/\/www.thecodecampus.de\/blog\/wp-content\/uploads\/2024\/11\/anne-naumann-tcc-author-96x96.webp","caption":"Anne Naumann"},"description":"Hi, I'm a web developer with a focus on frontend technologies, especially Angular. I also have a lot of fun when it comes to UI\/UX and when I need to make room for new books on my bookshelves.","sameAs":["https:\/\/thecodecampus.de\/ueber-uns\/trainer\/anne-naumann","https:\/\/www.linkedin.com\/in\/anne-naumann-1ab635307\/"],"url":"https:\/\/www.thecodecampus.de\/blog\/author\/anaumann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/posts\/2770","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\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/comments?post=2770"}],"version-history":[{"count":19,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/posts\/2770\/revisions"}],"predecessor-version":[{"id":3707,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/posts\/2770\/revisions\/3707"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/media\/2763"}],"wp:attachment":[{"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/media?parent=2770"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/categories?post=2770"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thecodecampus.de\/blog\/wp-json\/wp\/v2\/tags?post=2770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}