{"id":959,"date":"2023-05-17T05:00:00","date_gmt":"2023-05-17T12:00:00","guid":{"rendered":"https:\/\/www.angulartraining.com\/daily-newsletter\/?p=959"},"modified":"2024-01-22T15:04:47","modified_gmt":"2024-01-22T23:04:47","slug":"three-ways-to-update-angular-signals","status":"publish","type":"post","link":"https:\/\/www.angulartraining.com\/daily-newsletter\/three-ways-to-update-angular-signals\/","title":{"rendered":"Two ways to update Angular Signals"},"content":{"rendered":"\n<p>Yesterday, I wrote about some <a href=\"https:\/\/blog.angulartraining.com\/angular-signals-best-practices-around-exposing-signals-5385452150a1\" target=\"_blank\" rel=\"noopener\" title=\"\">best practices around exposing a Signal<\/a> in our Angular applications. Let&#8217;s now take a look at the two different ways a Signal can be updated.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><code>set()<\/code><\/h2>\n\n\n\n<p>The easiest way to update a Signal is the <code><a href=\"https:\/\/angular.io\/api\/core\/WritableSignal#set\" target=\"_blank\" rel=\"noopener\" title=\"\">set()<\/a><\/code> method. Nice and easy for basic data types such as strings or booleans:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"254\" height=\"47\" src=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/05\/image-16.png\" alt=\"\" class=\"wp-image-962\"\/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><code>update()<\/code><\/h2>\n\n\n\n<p>When the new value of a Signal depends on its previous value, <code><a href=\"https:\/\/angular.io\/api\/core\/WritableSignal#update\" target=\"_blank\" rel=\"noopener\" title=\"\">update()<\/a><\/code> is the best method to use. This is the ideal method for a counter, for instance:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"279\" height=\"52\" src=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/05\/image-19.png\" alt=\"\" class=\"wp-image-966\"\/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Here is how to increment the counter based on its current value:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"443\" height=\"49\" src=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/05\/image-20.png\" alt=\"\" class=\"wp-image-967\" style=\"width:434px;height:48px\" srcset=\"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/05\/image-20.png 443w, https:\/\/www.angulartraining.com\/daily-newsletter\/wp-content\/uploads\/2023\/05\/image-20-300x33.png 300w\" sizes=\"auto, (max-width: 443px) 100vw, 443px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/www.dictionary.com\/browse\/tl-dr\" title=\"\">TL;DR<\/a><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>When you need to <strong>update a simple value<\/strong> (string, number, boolean), use <code>set()<\/code>.<\/li>\n\n\n\n<li>If that <strong>new value is based on the previous one<\/strong>, use <code>update()<\/code> instead of <code>set()<\/code><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday, I wrote about some best practices around exposing a Signal in our Angular applications. Let&#8217;s now take a look at the two different ways a Signal can be updated. set() The easiest way to update a Signal is the set() method. Nice and easy for basic data types such as strings or booleans: update() [&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,29],"tags":[],"class_list":["post-959","post","type-post","status-publish","format-standard","hentry","category-angular","category-signals"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/959","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=959"}],"version-history":[{"count":5,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/959\/revisions"}],"predecessor-version":[{"id":1942,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/959\/revisions\/1942"}],"wp:attachment":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/media?parent=959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/categories?post=959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/tags?post=959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}