{"id":133,"date":"2024-07-31T03:29:22","date_gmt":"2024-07-31T03:29:22","guid":{"rendered":"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/"},"modified":"2024-07-31T03:29:22","modified_gmt":"2024-07-31T03:29:22","slug":"signalo-naudojimo-kampu-17-vadovas","status":"publish","type":"post","link":"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/","title":{"rendered":"Signalo naudojimo kampu 17 vadovas"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div id=\"\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Turinys:<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Ivadas\" >\u012evadas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Kas_yra_Signalas\" >Kas yra Signalas?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Kodel_signalas_yra_svarbus\" >Kod\u0117l signalas yra svarbus?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Signalo_kurimas\" >Signalo k\u016brimas<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#1_veiksmas_importuokite_reikiamus_modulius\" >1 veiksmas: importuokite reikiamus modulius<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Signalu_metodai\" >Signal\u0173 metodai<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Prieiga_prie_signalo\" >Prieiga prie signalo<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Reaktyvus_signalai\" >Reaktyv\u016bs signalai<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#1_veiksmas_sukurkite_koordinaciu_signalus\" >1 veiksmas: sukurkite koordina\u010di\u0173 signalus<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Kas_skaiciuojama\" >Kas skai\u010diuojama?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Asinchronines_operacijos_su_signalu\" >Asinchronin\u0117s operacijos su signalu<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#1_veiksmas_sukurkite_signala_ir_duomenu_saugojimo_bei_ikelimo_busenos_metodus\" >1 veiksmas: sukurkite signal\u0105 ir duomen\u0173 saugojimo bei \u012fk\u0117limo b\u016bsenos metodus<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#2_veiksmas_atnaujinkite_sablona\" >2 veiksmas: atnaujinkite \u0161ablon\u0105<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Signalo_ir_RxJS_palyginimas\" >Signalo ir RxJS palyginimas<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Signalas\" >Signalas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#RxJS\" >RxJS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Palyginimo_pavyzdys\" >Palyginimo pavyzdys<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Signalo_naudojimo_pranasumai_ir_trukumai\" >Signalo naudojimo prana\u0161umai ir tr\u016bkumai<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Privalumai\" >Privalumai<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Trukumai\" >Tr\u016bkumai<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/07\/31\/signalo-naudojimo-kampu-17-vadovas\/#Isvada\" >I\u0161vada<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Ivadas\"><\/span>\u012evadas<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Angular 17 yra galingas \u012frankis kuriant \u0161iuolaikines \u017einiatinklio programas.  Su kiekvienu nauju leidimu k\u016br\u0117j\u0173 komanda prideda nauj\u0173 funkcij\u0173, o vienas \u012fdomiausi\u0173 \u201eAngular 17\u201c papildym\u0173 yra \u201eSignal\u201c palaikymas.  \u0160iame straipsnyje i\u0161nagrin\u0117sime, kas yra signalas, kaip j\u012f naudoti \u201eAngular\u201c ir pateiksime reali\u0173 naudojimo pavyzd\u017ei\u0173.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Kas_yra_Signalas\"><\/span>Kas yra Signalas?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Signalas yra s\u0105voka, naudojama duomen\u0173 poky\u010diams sekti ir \u012f juos reaguoti.  Tai supaprastina b\u016bsenos valdym\u0105 ir leid\u017eia automati\u0161kai atnaujinti komponentus pasikeitus duomenims.  \u201eAngular\u201c kontekste \u201eSignal\u201c integruojamas su reaktyviais ir asinchroniniais procesais, suteikdamas paprastesn\u012f ir intuityvesn\u012f b\u016bd\u0105 valdyti programos b\u016bsen\u0105.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Kodel_signalas_yra_svarbus\"><\/span>Kod\u0117l signalas yra svarbus?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<strong>Reaktyvumas<\/strong>: Signalas leid\u017eia automati\u0161kai reaguoti \u012f duomen\u0173 pasikeitimus, supaprastindamas programos b\u016bsenos ir vartotojo s\u0105sajos sinchronizavim\u0105.<\/li>\n<li>\n<strong>Spektaklis<\/strong>: naudojant signal\u0105 galima pagerinti na\u0161um\u0105 optimizuojant komponent\u0173 atvaizdavim\u0105.<\/li>\n<li>\n<strong>Paprastumas<\/strong>: Signalas supaprastina kod\u0105, tod\u0117l jis tampa lengviau skaitomas ir pri\u017ei\u016brimas.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Signalo_kurimas\"><\/span>Signalo k\u016brimas<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Nor\u0117dami prad\u0117ti, sukurkime paprast\u0105 signal\u0105, kuris steb\u0117s skaitiklio b\u016bsen\u0105.  \u201eAngular\u201c galime sukurti signal\u0105 naudodami <code>signal<\/code> nuo <code>@angular\/core<\/code> biblioteka.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_veiksmas_importuokite_reikiamus_modulius\"><\/span>1 veiksmas: importuokite reikiamus modulius<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Atidarykite fail\u0105 ir importuokite reikiamus modulius, tada sukurkite skaitiklio signal\u0105:<\/p>\n<pre><code class=\"language-typescript\">import { Component } from '@angular\/core';\nimport { signal } from '@angular\/core';\n\n@Component({\n  selector: 'app-root',\n  template: `\n    &lt;div style=\"text-align:center\"&gt;\n      &lt;h1&gt;Angular Signal Example&lt;\/h1&gt;\n      &lt;p&gt;Count: {{ count() }}&lt;\/p&gt;\n      &lt;button (click)=\"increment()\"&gt;Increment&lt;\/button&gt;\n      &lt;button (click)=\"decrement()\"&gt;Decrement&lt;\/button&gt;\n    &lt;\/div&gt;\n  `,\n  styleUrls: ('.\/app.component.css')\n})\nexport class AppComponent {\n  count = signal(0);\n\n  increment() {\n    this.count.set(this.count() + 1);\n  }\n\n  decrement() {\n    this.count.set(this.count() - 1);\n  }\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Signalu_metodai\"><\/span>Signal\u0173 metodai<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\n<p><strong>rinkinys<\/strong>: <code>set<\/code> metodas naudojamas naujai signalo vertei nustatyti.  Auk\u0161\u010diau pateiktame pavyzdyje <code>increment<\/code> metodas padidina signalo vert\u0119 1 naudojant <code>this.count.set(this.count() + 1)<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>atnaujinti<\/strong>: <code>update<\/code> \u0160is metodas leid\u017eia atnaujinti signalo vert\u0119 pagal jo dabartin\u0119 vert\u0119:<\/p>\n<pre><code class=\"language-typescript\">this.count.update(value =&gt; value + 1);\n<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Prenumeruoti<\/strong>: <code>subscribe<\/code> metodas leid\u017eia u\u017esiprenumeruoti signalo pakeitimus:<\/p>\n<pre><code class=\"language-typescript\">this.count.subscribe(value =&gt; {\n  console.log('Count changed to', value);\n});\n<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Prieiga_prie_signalo\"><\/span>Prieiga prie signalo<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Nor\u0117dami pasiekti signalo vert\u0119, turite j\u012f i\u0161kviesti kaip funkcij\u0105: <code>count()<\/code>.  Tai b\u016btina, nes \u201eSignal\u201c gr\u0105\u017eina funkcij\u0105, apvyniojan\u010di\u0105 dabartin\u0119 reik\u0161m\u0119, leid\u017eian\u010di\u0105 \u201eAngular\u201c sekti pakeitimus ir automati\u0161kai atnaujinti atitinkamus komponentus.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Reaktyvus_signalai\"><\/span>Reaktyv\u016bs signalai<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Vienas i\u0161 pagrindini\u0173 \u201eSignal\u201c privalum\u0173 yra galimyb\u0117 sukurti reaktyvius signalus, kurie automati\u0161kai atnaujinami pasikeitus priklausomyb\u0117ms.  Panagrin\u0117kime pavyzd\u012f, kai turime du signalus, vaizduojan\u010dius ta\u0161ko koordinates, ir tre\u010di\u0105 signal\u0105, apskai\u010diuojant\u012f atstum\u0105 nuo prad\u017eios.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_veiksmas_sukurkite_koordinaciu_signalus\"><\/span>1 veiksmas: sukurkite koordina\u010di\u0173 signalus<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-typescript\">import { Component } from '@angular\/core';\nimport { signal, computed } from '@angular\/core';\n\n@Component({\n  selector: 'app-root',\n  template: `\n    &lt;div style=\"text-align:center\"&gt;\n      &lt;h1&gt;Reactive Signal Example&lt;\/h1&gt;\n      &lt;p&gt;X: {{ x() }}, Y: {{ y() }}&lt;\/p&gt;\n      &lt;p&gt;Distance from origin: {{ distance() }}&lt;\/p&gt;\n      &lt;button (click)=\"moveRight()\"&gt;Move Right&lt;\/button&gt;\n      &lt;button (click)=\"moveUp()\"&gt;Move Up&lt;\/button&gt;\n    &lt;\/div&gt;\n  `,\n  styleUrls: ('.\/app.component.css')\n})\nexport class AppComponent {\n  x = signal(0);\n  y = signal(0);\n\n  distance = computed(() =&gt; Math.sqrt(this.x() ** 2 + this.y() ** 2));\n\n  moveRight() {\n    this.x.set(this.x() + 1);\n  }\n\n  moveUp() {\n    this.y.set(this.y() + 1);\n  }\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Kas_skaiciuojama\"><\/span>Kas skai\u010diuojama?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><code>computed<\/code>  yra funkcija, leid\u017eianti kurti reaktyvius skai\u010diavimus pagal kitus signalus.  Gr\u0105\u017einta vert\u0117 <code>computed<\/code> bus automati\u0161kai atnaujintas, kai pasikeis kuris nors jame nurodytas signalas.  Auk\u0161\u010diau pateiktame pavyzdyje <code>distance<\/code> yra apskai\u010diuojamas remiantis <code>x<\/code> ir <code>y<\/code> ir bus atnaujintas, kai pasikeis kuris nors i\u0161 \u0161i\u0173 signal\u0173.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Asinchronines_operacijos_su_signalu\"><\/span>Asinchronin\u0117s operacijos su signalu<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Signalas taip pat gali b\u016bti naudojamas valdyti b\u016bsen\u0105, kai atliekamos asinchronin\u0117s operacijos, pvz., gaunami duomenys i\u0161 API.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_veiksmas_sukurkite_signala_ir_duomenu_saugojimo_bei_ikelimo_busenos_metodus\"><\/span>1 veiksmas: sukurkite signal\u0105 ir duomen\u0173 saugojimo bei \u012fk\u0117limo b\u016bsenos metodus<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-typescript\">data = signal(null);\nloading = signal(false);\nerror = signal(null);\n\nloadData() {\n  this.loading.set(true);\n  this.error.set(null);\n\n  fetch('https:\/\/api.example.com\/data')\n    .then(response =&gt; response.json())\n    .then(data =&gt; {\n      this.data.set(data);\n      this.loading.set(false);\n    })\n    .catch(error =&gt; {\n      this.error.set(error);\n      this.loading.set(false);\n    });\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"2_veiksmas_atnaujinkite_sablona\"><\/span>2 veiksmas: atnaujinkite \u0161ablon\u0105<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-typescript\">import { Component } from '@angular\/core';\nimport { signal } from '@angular\/core';\n\n@Component({\n  selector: 'app-root',\n  template: `\n    &lt;div style=\"text-align:center\"&gt;\n      &lt;h1&gt;Async Signal Example&lt;\/h1&gt;\n      &lt;div *ngIf=\"loading()\"&gt;Loading...&lt;\/div&gt;\n      &lt;div *ngIf=\"error()\"&gt;Error: {{ error() }}&lt;\/div&gt;\n      &lt;div *ngIf=\"data()\"&gt;\n        &lt;pre&gt;{{ data() | json }}&lt;\/pre&gt;\n      &lt;\/div&gt;\n      &lt;button (click)=\"loadData()\"&gt;Load Data&lt;\/button&gt;\n    &lt;\/div&gt;\n  `,\n  styleUrls: ('.\/app.component.css')\n})\nexport class AppComponent {\n  data = signal(null);\n  loading = signal(false);\n  error = signal(null);\n\n  loadData() {\n    this.loading.set(true);\n    this.error.set(null);\n\n    fetch('https:\/\/api.example.com\/data')\n      .then(response =&gt; response.json())\n      .then(data =&gt; {\n        this.data.set(data);\n        this.loading.set(false);\n      })\n      .catch(error =&gt; {\n        this.error.set(error);\n        this.loading.set(false);\n      });\n  }\n}\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Signalo_ir_RxJS_palyginimas\"><\/span>Signalo ir RxJS palyginimas<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>RxJS buvo pagrindinis \u012frankis reaktyvumui valdyti \u201eAngular\u201c iki \u201eSignal\u201c \u012fvedimo.  Palyginkime juos:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Signalas\"><\/span>Signalas<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\n<strong>Naudojimo paprastumas<\/strong>: Signalas suteikia paprastesn\u0119 ir intuityvesn\u0119 b\u016bsenos valdymo sintaks\u0119.<\/li>\n<li>\n<strong>Spektaklis<\/strong>: Signalas optimizuotas atnaujinti tik tas DOM dalis, kurios i\u0161 tikr\u0173j\u0173 pasikeit\u0117.<\/li>\n<li>\n<strong>Integracija<\/strong>: Signalas geriau integruojamas su Angular poky\u010di\u0173 aptikimo mechanizmais.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"RxJS\"><\/span>RxJS<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\n<strong>Lankstumas<\/strong>: RxJS si\u016blo galingus operatorius sud\u0117tingoms reaktyviosioms grandin\u0117ms.<\/li>\n<li>\n<strong>Platus palaikymas<\/strong>: RxJS naudojama daugelyje projekt\u0173 ir turi didel\u0119 ekosistem\u0105.<\/li>\n<li>\n<strong>Mokymosi kreiv\u0117<\/strong>: RxJS reikalauja gilesnio reaktyvaus programavimo supratimo, o tai gali b\u016bti sud\u0117tinga pradedantiesiems.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Palyginimo_pavyzdys\"><\/span>Palyginimo pavyzdys<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Signalas:<\/p>\n<pre><code class=\"language-typescript\">count = signal(0);\n\nincrement() {\n  this.count.set(this.count() + 1);\n}\n<\/code><\/pre>\n<p>RxJS:<\/p>\n<pre><code class=\"language-typescript\">import { BehaviorSubject } from 'rxjs';\n\ncount$ = new BehaviorSubject(0);\n\nincrement() {\n  this.count$.next(this.count$.value + 1);\n}\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Signalo_naudojimo_pranasumai_ir_trukumai\"><\/span>Signalo naudojimo prana\u0161umai ir tr\u016bkumai<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Privalumai\"><\/span>Privalumai<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\n<strong>Spektaklis<\/strong>: optimizuoja DOM naujinimus, steb\u0117damas poky\u010dius signalo lygiu.<\/li>\n<li>\n<strong>Paprastumas<\/strong>: Paprastesn\u0117 ir suprantamesn\u0117 sintaks\u0117, palyginti su RxJS.<\/li>\n<li>\n<strong>Integracija su Angular<\/strong>: Geresn\u0117 integracija su Angular poky\u010di\u0173 aptikimo mechanizmais.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Trukumai\"><\/span>Tr\u016bkumai<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\n<strong>Ribotas lankstumas<\/strong>: Signalas yra ma\u017eiau lankstus, palyginti su RxJS, ypa\u010d sud\u0117ting\u0173 reaktyvi\u0173 scenarij\u0173 atveju.<\/li>\n<li>\n<strong>Ma\u017eesn\u0117 ekosistema<\/strong>: Signalas yra naujesnis ir turi ma\u017eesn\u0119 ekosistem\u0105, palyginti su RxJS.<\/li>\n<li>\n<strong>Mokymosi kreiv\u0117<\/strong>: norint pereiti nuo RxJS prie signalo, reikia i\u0161mokti nauj\u0173 koncepcij\u0173 ir po\u017ei\u016bri\u0173.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Isvada\"><\/span>I\u0161vada<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u201eSignal in Angular 17\u201c yra galingas ir lengvai naudojamas mechanizmas, skirtas valdyti program\u0173 b\u016bsen\u0105 ir reaktyvum\u0105.  \u0160iame straipsnyje i\u0161nagrin\u0117jome pagrindines signalo s\u0105vokas ir naudojimo pavyzd\u017eius, \u012fskaitant pagrindinius signalus, reaktyvius signalus ir asinchronines operacijas.  Taip pat palyginome signal\u0105 su RxJS ir aptar\u0117me j\u0173 privalumus ir tr\u016bkumus.<\/p>\n<p>Pabandykite naudoti signal\u0105 kitame Angular projekte ir pajuskite \u0161io galingo \u012frankio privalumus.<\/p>\n<\/p><\/div>\n<p>Jei tekste radote klaid\u0105, si\u0173skite prane\u0161im\u0105 autoriui pa\u017eym\u0117dami klaid\u0105 ir paspausdami Ctrl-Enter.<\/p>\n<p><br \/>\n<br \/><a href=\"https:\/\/techplanet.today\/post\/guide-to-using-signal-in-angular-17\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u012evadas Angular 17 yra galingas \u012frankis kuriant \u0161iuolaikines \u017einiatinklio programas. Su kiekvienu nauju leidimu k\u016br\u0117j\u0173 komanda prideda nauj\u0173 funkcij\u0173, o vienas \u012fdomiausi\u0173 \u201eAngular 17\u201c papildym\u0173 yra \u201eSignal\u201c palaikymas. \u0160iame straipsnyje i\u0161nagrin\u0117sime, kas yra signalas, kaip j\u012f naudoti \u201eAngular\u201c ir pateiksime reali\u0173 naudojimo pavyzd\u017ei\u0173. Kas yra Signalas? Signalas yra s\u0105voka, naudojama duomen\u0173 poky\u010diams sekti ir \u012f [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":134,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-133","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologijos"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/posts\/133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/comments?post=133"}],"version-history":[{"count":0,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/posts\/133\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/media\/134"}],"wp:attachment":[{"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/media?parent=133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/categories?post=133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/tags?post=133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}