<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Service Guides on AngularTS</title><link>https://angular-wave.github.io/angular.ts/docs/services/</link><description>Recent content in Service Guides on AngularTS</description><generator>Hugo</generator><language>en</language><atom:link href="https://angular-wave.github.io/angular.ts/docs/services/index.xml" rel="self" type="application/rss+xml"/><item><title>Making HTTP requests with the $http service</title><link>https://angular-wave.github.io/angular.ts/docs/services/http/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/services/http/</guid><description>&lt;p>Use &lt;code>$http&lt;/code> for application HTTP calls when you need request configuration,
response transforms, interceptors, or integration with AngularTS services.&lt;/p>
&lt;p>This guide focuses on workflows. Exact call signatures and exported interfaces
live in TypeDoc:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="../../../typedoc/interfaces/HttpService.html">&lt;code>HttpService&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/RequestConfig.html">&lt;code>RequestConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/HttpResponse.html">&lt;code>HttpResponse&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/HttpInterceptor.html">&lt;code>HttpInterceptor&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="basic-requests">Basic Requests&lt;a class="td-heading-self-link" href="#basic-requests" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ts" data-lang="ts">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$http&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#204a87;font-weight:bold">get&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">User&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;/api/users/42&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">).&lt;/span>&lt;span style="color:#000">then&lt;/span>&lt;span style="color:#000;font-weight:bold">(({&lt;/span> &lt;span style="color:#000">data&lt;/span> &lt;span style="color:#000;font-weight:bold">})&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">this&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">user&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">data&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">});&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use a full request config when method, URL, headers, params, timeout, response
type, or upload handlers need to be assembled together.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ts" data-lang="ts">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$http&lt;/span>&lt;span style="color:#000;font-weight:bold">({&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">method&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;POST&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">url&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;/api/users&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">data&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">:&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span> &lt;span style="color:#000">name&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Ada&amp;#39;&lt;/span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">headers&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">:&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;X-Trace&amp;#39;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">:&lt;/span> &lt;span style="color:#000">traceId&lt;/span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}).&lt;/span>&lt;span style="color:#000">then&lt;/span>&lt;span style="color:#000;font-weight:bold">(({&lt;/span> &lt;span style="color:#000">data&lt;/span> &lt;span style="color:#000;font-weight:bold">})&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">this&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">user&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">data&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">});&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="query-parameters">Query Parameters&lt;a class="td-heading-self-link" href="#query-parameters" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>&lt;code>params&lt;/code> are appended to the URL using &lt;code>$httpParamSerializer&lt;/code>.&lt;/p></description></item><item><title>Decoupled Messaging</title><link>https://angular-wave.github.io/angular.ts/docs/services/pubsub/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/services/pubsub/</guid><description>&lt;p>AngularTS has two messaging models:&lt;/p>
&lt;ul>
&lt;li>&lt;code>$eventBus&lt;/code> is an application-wide &lt;code>PubSub&lt;/code> instance for decoupled communication, including messages from non-Angular code.&lt;/li>
&lt;li>Scope events (&lt;code>$scope.$on&lt;/code>, &lt;code>$scope.$emit&lt;/code>, &lt;code>$scope.$broadcast&lt;/code>) travel through the scope tree and are best for parent/child communication.&lt;/li>
&lt;/ul>
&lt;p>Exact &lt;code>$eventBus&lt;/code> method signatures live in TypeDoc:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="../../../typedoc/classes/PubSub.html">&lt;code>PubSub&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/classes/PubSubProvider.html">&lt;code>PubSubProvider&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="publish-and-subscribe">Publish and subscribe&lt;a class="td-heading-self-link" href="#publish-and-subscribe" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Inject &lt;code>$eventBus&lt;/code> when a publisher and subscriber should not know about each other.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-typescript" data-lang="typescript">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">class&lt;/span> &lt;span style="color:#000">CartService&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">static&lt;/span> &lt;span style="color:#000">$inject&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;$eventBus&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">];&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">constructor&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#204a87;font-weight:bold">private&lt;/span> &lt;span style="color:#000">$eventBus&lt;/span>: &lt;span style="color:#204a87;font-weight:bold">ng.PubSub&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#000;font-weight:bold">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">addItem&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">product&lt;/span>: &lt;span style="color:#204a87;font-weight:bold">Product&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">quantity&lt;/span>: &lt;span style="color:#204a87;font-weight:bold">number&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">this&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">$eventBus&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">publish&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;cart:item-added&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span> &lt;span style="color:#000">product&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">quantity&lt;/span> &lt;span style="color:#000;font-weight:bold">});&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">class&lt;/span> &lt;span style="color:#000">HeaderController&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">static&lt;/span> &lt;span style="color:#000">$inject&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;$eventBus&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;$scope&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">];&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">cartCount&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">constructor&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$eventBus&lt;/span>: &lt;span style="color:#204a87;font-weight:bold">ng.PubSub&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$scope&lt;/span>: &lt;span style="color:#204a87;font-weight:bold">ng.Scope&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">const&lt;/span> &lt;span style="color:#000">unsubscribe&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$eventBus&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">subscribe&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;cart:item-added&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000;font-weight:bold">()&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">const&lt;/span> &lt;span style="color:#000">view&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$scope&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;$ctrl&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span> &lt;span style="color:#204a87;font-weight:bold">as&lt;/span> &lt;span style="color:#000">HeaderController&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">view&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">cartCount&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">+=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">});&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$scope&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">$on&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;$destroy&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">unsubscribe&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>subscribe()&lt;/code> returns an unsubscribe function. Keep that function and call it during teardown, especially from long-lived services, directive controllers, or manually bootstrapped integrations.&lt;/p></description></item><item><title>Real-Time Communication</title><link>https://angular-wave.github.io/angular.ts/docs/services/realtime/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/services/realtime/</guid><description>&lt;p>AngularTS provides five building blocks for real-time and compute-heavy work:&lt;/p>
&lt;ul>
&lt;li>&lt;code>$sse&lt;/code> for Server-Sent Events.&lt;/li>
&lt;li>&lt;code>$websocket&lt;/code> for bidirectional WebSocket connections.&lt;/li>
&lt;li>&lt;code>$webTransport&lt;/code> for HTTP/3 WebTransport sessions with datagrams and streams.&lt;/li>
&lt;li>&lt;code>ng-worker&lt;/code> for JavaScript work in a Web Worker.&lt;/li>
&lt;li>&lt;code>ng-wasm&lt;/code> for loading WebAssembly modules.&lt;/li>
&lt;/ul>
&lt;p>Exact service and connection signatures live in TypeDoc:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="../../../typedoc/types/SseService.html">&lt;code>SseService&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/SseConfig.html">&lt;code>SseConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/SseConnection.html">&lt;code>SseConnection&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/types/WebSocketService.html">&lt;code>WebSocketService&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/WebSocketConfig.html">&lt;code>WebSocketConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/WebSocketConnection.html">&lt;code>WebSocketConnection&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/types/WebTransportService.html">&lt;code>WebTransportService&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/WebTransportConfig.html">&lt;code>WebTransportConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/WebTransportConnection.html">&lt;code>WebTransportConnection&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/WorkerConfig.html">&lt;code>WorkerConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/WorkerConnection.html">&lt;code>WorkerConnection&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="server-sent-events">Server-Sent Events&lt;a class="td-heading-self-link" href="#server-sent-events" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>&lt;code>$sse&lt;/code> creates a managed &lt;code>EventSource&lt;/code> connection. It handles query parameters, JSON message parsing, heartbeat detection, automatic reconnection, and clean shutdown.&lt;/p></description></item><item><title>Typed REST Resources</title><link>https://angular-wave.github.io/angular.ts/docs/services/rest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/services/rest/</guid><description>&lt;p>&lt;code>$rest&lt;/code> wraps a REST backend with a small typed resource client. By default it uses &lt;code>$http&lt;/code>; pass a custom backend when a resource should read from another data source or compose network and cache behavior.&lt;/p>
&lt;p>Exact method signatures live in TypeDoc:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="../../../typedoc/classes/RestService.html">&lt;code>RestService&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/RestDefinition.html">&lt;code>RestDefinition&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/EntityClass.html">&lt;code>EntityClass&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/RestBackend.html">&lt;code>RestBackend&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/RestCacheStore.html">&lt;code>RestCacheStore&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/classes/CachedRestBackend.html">&lt;code>CachedRestBackend&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/HttpService.html">&lt;code>HttpService&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="register-a-resource">Register a resource&lt;a class="td-heading-self-link" href="#register-a-resource" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Register shared resources in a config block. The provider stores resource definitions before the application starts, then the &lt;code>$rest&lt;/code> factory uses the live &lt;code>$http&lt;/code> service at runtime.&lt;/p></description></item><item><title>Client-Side Routing</title><link>https://angular-wave.github.io/angular.ts/docs/services/routing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/services/routing/</guid><description>&lt;p>AngularTS has two routing layers. &lt;code>$location&lt;/code> manages the browser URL and history directly. &lt;code>$state&lt;/code> works at the application level with named states, parameters, resolves, and transition hooks.&lt;/p>
&lt;p>Exact routing API signatures live in TypeDoc:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="../../../typedoc/classes/StateProvider.html">&lt;code>StateService&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/StateDeclaration.html">&lt;code>StateDeclaration&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/TransitionOptions.html">&lt;code>TransitionOptions&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/classes/Location.html">&lt;code>Location&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/classes/LocationProvider.html">&lt;code>LocationProvider&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="work-with-the-url">Work With The URL&lt;a class="td-heading-self-link" href="#work-with-the-url" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use &lt;code>$location&lt;/code> when code needs to inspect or change the raw URL.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-typescript" data-lang="typescript">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$location&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">path&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// &amp;#34;/dashboard&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">$location&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">search&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// { tab: &amp;#34;overview&amp;#34; }
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">$location&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">hash&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// &amp;#34;summary&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">$location&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">url&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// &amp;#34;/dashboard?tab=overview#summary&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">$location&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">absUrl&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// &amp;#34;https://app.example.com/dashboard?tab=overview#summary&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Setter methods return &lt;code>$location&lt;/code>, so related URL changes can be chained.&lt;/p></description></item><item><title>Cookies And Browser Storage</title><link>https://angular-wave.github.io/angular.ts/docs/services/storage-cookie/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/services/storage-cookie/</guid><description>&lt;p>AngularTS provides &lt;code>$cookie&lt;/code> for typed, injectable cookie access and &lt;code>$window&lt;/code> for direct browser storage access. Prefer injected services over globals so unit tests can replace browser APIs without patching &lt;code>window&lt;/code> or &lt;code>document&lt;/code>.&lt;/p>
&lt;p>Exact cookie API signatures live in TypeDoc:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="../../../typedoc/classes/CookieService.html">&lt;code>CookieService&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/interfaces/CookieOptions.html">&lt;code>CookieOptions&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../typedoc/classes/CookieProvider.html">&lt;code>CookieProvider&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="read-cookies">Read Cookies&lt;a class="td-heading-self-link" href="#read-cookies" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>&lt;code>$cookie&lt;/code> decodes keys and values, parses &lt;code>document.cookie&lt;/code>, and caches the parsed cookie map until the browser cookie string changes.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-typescript" data-lang="typescript">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">const&lt;/span> &lt;span style="color:#000">token&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$cookie&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#204a87;font-weight:bold">get&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;session_token&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">const&lt;/span> &lt;span style="color:#000">prefs&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$cookie&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">getObject&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">UserPreferences&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;(&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;user_prefs&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">const&lt;/span> &lt;span style="color:#000">all&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$cookie&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">getAll&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use &lt;code>get()&lt;/code> for raw string values and &lt;code>getObject()&lt;/code> only for cookies you control and know contain JSON.&lt;/p></description></item></channel></rss>