<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Angular on Omid Farhang</title><link>https://omid.dev/tags/angular/</link><description>Recent content in Angular on Omid Farhang</description><image><title>Omid Farhang</title><url>https://omid.dev/images/bio-photo-150x150.jpg</url><link>https://omid.dev/images/bio-photo-150x150.jpg</link></image><generator>Hugo -- 0.161.1</generator><language>en-US</language><copyright>2026 Omid Farhang | All rights reserved.</copyright><lastBuildDate>Tue, 02 Jun 2026 01:15:00 +0330</lastBuildDate><atom:link href="https://omid.dev/tags/angular/index.xml" rel="self" type="application/rss+xml"/><item><title>Stop Modeling Angular Screens with Five Booleans</title><link>https://omid.dev/2026/06/02/stop-modeling-angular-screens-with-five-booleans/</link><pubDate>Tue, 02 Jun 2026 01:15:00 +0330</pubDate><guid>https://omid.dev/2026/06/02/stop-modeling-angular-screens-with-five-booleans/</guid><description>Most Angular UI bugs come from screens modeled as scattered flags. Replace loading, error, empty, and ready booleans with one explicit state model your templates and reviewers can trust.</description></item><item><title>Angular Is Quietly Becoming AI-Tool Friendly: What MCP Server Support Changes for Real Teams</title><link>https://omid.dev/2026/05/27/angular-mcp-ai-workflows-real-teams/</link><pubDate>Wed, 27 May 2026 02:48:00 +0330</pubDate><guid>https://omid.dev/2026/05/27/angular-mcp-ai-workflows-real-teams/</guid><description>Angular&amp;#39;s MCP Server tooling is not just an AI demo. It changes how teams can connect framework knowledge, local code, and coding assistants without losing their conventions.</description></item><item><title>The Hidden Cost of Nice Syntax: When Angular's New Template Features Make Code Harder to Reason About</title><link>https://omid.dev/2026/05/26/angular-template-syntax-hidden-cost/</link><pubDate>Tue, 26 May 2026 02:48:00 +0330</pubDate><guid>https://omid.dev/2026/05/26/angular-template-syntax-hidden-cost/</guid><description>Angular&amp;#39;s newer template syntax is powerful, but spread/rest, arrow functions, multi-case switches, and richer control flow need team rules before clever templates become maintenance debt.</description></item><item><title>Signal Forms Aren't Just a Forms API Update: They Change How You Model UI State</title><link>https://omid.dev/2026/05/25/signal-forms-model-ui-state/</link><pubDate>Mon, 25 May 2026 02:48:00 +0330</pubDate><guid>https://omid.dev/2026/05/25/signal-forms-model-ui-state/</guid><description>Signal Forms push Angular forms toward explicit state modeling, where validation, submission, async work, and derived UI state live in the same reactive graph.</description></item><item><title>Migrating from React to Angular: A 'Ship of Theseus' Case Study in Production</title><link>https://omid.dev/2026/01/01/ship-of-theseus-react-to-angular/</link><pubDate>Thu, 01 Jan 2026 02:25:59 +0330</pubDate><guid>https://omid.dev/2026/01/01/ship-of-theseus-react-to-angular/</guid><description>A detailed look at why and how we migrated a core legacy React application to Angular in a high-stakes FinTech environment using the Strangler Fig pattern.</description></item><item><title>Angular Signals and Control Theory: A New Reactivity Model</title><link>https://omid.dev/2025/12/24/angular-signals-control-theory/</link><pubDate>Wed, 24 Dec 2025 02:20:31 +0330</pubDate><guid>https://omid.dev/2025/12/24/angular-signals-control-theory/</guid><description>Explore the connection between Control Theory and Angular&amp;#39;s new Signals-based reactivity model for better frontend performance.</description></item><item><title>Unlocking the Power of Angular's `@ViewChild` and `@ContentChild`</title><link>https://omid.dev/2024/09/08/unlocking-the-power-of-angulars-viewchild-and-contentchild/</link><pubDate>Sun, 08 Sep 2024 12:56:55 +0330</pubDate><guid>https://omid.dev/2024/09/08/unlocking-the-power-of-angulars-viewchild-and-contentchild/</guid><description>&lt;p&gt;Angular&amp;rsquo;s &lt;code&gt;@ViewChild&lt;/code&gt; and &lt;code&gt;@ContentChild&lt;/code&gt; decorators provide a powerful way to interact with child components, DOM elements, and projected content within a component&amp;rsquo;s template. While they are often misunderstood or used interchangeably, each has its own specific purpose and use cases.&lt;/p&gt;
&lt;p&gt;In this comprehensive guide, we’ll dive deep into both decorators, understanding their differences, use cases, and best practices. Additionally, we’ll explore advanced techniques for leveraging them in various scenarios and edge cases, complete with sample code for hands-on understanding.&lt;/p&gt;</description></item><item><title>Migrating from REST to GraphQL: A Step-by-Step Guide for Express.js and Angular</title><link>https://omid.dev/2024/08/07/migrating-from-rest-to-graphql-a-step-by-step-guide-for-expressjs-and-angular/</link><pubDate>Wed, 07 Aug 2024 02:20:56 +0330</pubDate><guid>https://omid.dev/2024/08/07/migrating-from-rest-to-graphql-a-step-by-step-guide-for-expressjs-and-angular/</guid><description>&lt;p&gt;In today&amp;rsquo;s rapidly evolving web development landscape, GraphQL has emerged as a powerful alternative to traditional REST APIs. This blog post will guide you through the process of migrating your Express.js backend and Angular frontend from REST to GraphQL, unlocking the benefits of a more flexible and efficient API architecture.&lt;/p&gt;
&lt;aside class="companion-card"&gt;
&lt;span class="companion-card__icon" aria-hidden="true"&gt;
&lt;i class="fa-solid fa-cubes-stacked"&gt;&lt;/i&gt;
&lt;/span&gt;
&lt;span class="companion-card__content"&gt;
&lt;span class="companion-card__eyebrow"&gt;Companion resource&lt;/span&gt;
&lt;strong class="companion-card__title"&gt;Companion Project&lt;/strong&gt;
&lt;span class="companion-card__description"&gt;Explore the complete working example on GitHub.&lt;/span&gt;
&lt;code class="companion-card__path"&gt;github.com/omidfarhang/example-projects/graphql-express-angular-migration&lt;/code&gt;
&lt;/span&gt;
&lt;span class="companion-card__actions"&gt;
&lt;a class="companion-card__button companion-card__button--primary" href="https://github.com/omidfarhang/example-projects/tree/master/graphql-express-angular-migration" target="_blank" rel="noopener noreferrer"&gt;
&lt;i class="fa-brands fa-github" aria-hidden="true"&gt;&lt;/i&gt;
View on GitHub
&lt;/a&gt;
&lt;/span&gt;
&lt;/aside&gt;
&lt;h2 id="1-introduction"&gt;1. Introduction&lt;/h2&gt;
&lt;p&gt;REST (Representational State Transfer) has been the go-to architectural style for building web APIs for many years. However, GraphQL, developed by Facebook, offers several advantages:&lt;/p&gt;</description></item><item><title>Creating Dynamic Music Visualizations with Angular and the Web Audio API</title><link>https://omid.dev/2024/07/13/creating-dynamic-music-visualizations-with-angular-and-the-web-audio-api/</link><pubDate>Sat, 13 Jul 2024 17:43:38 +0330</pubDate><guid>https://omid.dev/2024/07/13/creating-dynamic-music-visualizations-with-angular-and-the-web-audio-api/</guid><description>&lt;p&gt;Music visualization has always been a fascinating way to enhance the auditory experience, offering a visual representation of sound that can be both mesmerizing and informative. With the power of modern web technologies like Angular and the Web Audio API, creating dynamic music visualizations is more accessible than ever. This blog post will guide you through the process of building an engaging music visualization application using Angular and the Web Audio API.&lt;/p&gt;</description></item><item><title>Building a Distributed Tracing System with OpenTelemetry in Angular Applications</title><link>https://omid.dev/2024/06/28/building-a-distributed-tracing-system-with-opentelemetry-in-angular-applications/</link><pubDate>Fri, 28 Jun 2024 12:31:41 +0330</pubDate><guid>https://omid.dev/2024/06/28/building-a-distributed-tracing-system-with-opentelemetry-in-angular-applications/</guid><description>&lt;p&gt;In today&amp;rsquo;s complex microservices architectures, understanding the flow of requests and pinpointing performance bottlenecks can be challenging. This is where distributed tracing comes into play, and OpenTelemetry provides a powerful toolkit for implementing it. In this post, we&amp;rsquo;ll explore how to build a distributed tracing system for Angular applications using OpenTelemetry, with a focus on microservices architecture and performance monitoring.&lt;/p&gt;
&lt;h2 id="what-is-a-distributed-tracing-system"&gt;What is a Distributed Tracing System?&lt;/h2&gt;
&lt;p&gt;A distributed tracing system is a method of tracking and analyzing requests as they flow through various services in a distributed system. It provides a holistic view of how a request propagates through different components, helping developers identify bottlenecks, troubleshoot issues, and optimize performance.&lt;/p&gt;</description></item><item><title>Implementing Custom Web Components in Angular with Stencil.js</title><link>https://omid.dev/2024/06/26/implementing-custom-web-components-in-angular-with-stenciljs/</link><pubDate>Wed, 26 Jun 2024 05:01:11 +0330</pubDate><guid>https://omid.dev/2024/06/26/implementing-custom-web-components-in-angular-with-stenciljs/</guid><description>&lt;p&gt;In modern web development, the ability to create reusable components that work across different frameworks and libraries is crucial. This is where Web Components come into play. Web Components allow developers to create custom, reusable HTML elements with encapsulated functionality and styling. However, building Web Components from scratch can be complex and time-consuming. Enter Stencil.js, a powerful tool that simplifies the creation of Web Components.&lt;/p&gt;
&lt;aside class="companion-card"&gt;
&lt;span class="companion-card__icon" aria-hidden="true"&gt;
&lt;i class="fa-solid fa-cubes-stacked"&gt;&lt;/i&gt;
&lt;/span&gt;
&lt;span class="companion-card__content"&gt;
&lt;span class="companion-card__eyebrow"&gt;Companion resource&lt;/span&gt;
&lt;strong class="companion-card__title"&gt;Companion Project&lt;/strong&gt;
&lt;span class="companion-card__description"&gt;Try the working example in your browser or inspect the full source code behind this article.&lt;/span&gt;
&lt;code class="companion-card__path"&gt;github.com/omidfarhang/example-projects/angular-stencil-web-components&lt;/code&gt;
&lt;/span&gt;
&lt;span class="companion-card__actions"&gt;
&lt;a class="companion-card__button companion-card__button--primary" href="https://playground.omid.dev/examples/angular-stencil-web-components/" target="_blank" rel="noopener noreferrer"&gt;
&lt;i class="fa-solid fa-play" aria-hidden="true"&gt;&lt;/i&gt;
Open live demo
&lt;/a&gt;
&lt;a class="companion-card__button companion-card__button--secondary" href="https://github.com/omidfarhang/example-projects/tree/master/angular-stencil-web-components" target="_blank" rel="noopener noreferrer"&gt;
&lt;i class="fa-brands fa-github" aria-hidden="true"&gt;&lt;/i&gt;
View on GitHub
&lt;/a&gt;
&lt;/span&gt;
&lt;/aside&gt;
&lt;p&gt;In this guide, we&amp;rsquo;ll explore how to create custom Web Components using Stencil.js and seamlessly integrate them into Angular applications. Whether you&amp;rsquo;re an experienced developer or just getting started, this comprehensive guide will walk you through each step of the process.&lt;/p&gt;</description></item><item><title>Building a Decentralized Application (DApp) with Angular and Ethereum</title><link>https://omid.dev/2024/06/25/building-a-decentralized-application-dapp-with-angular-and-ethereum/</link><pubDate>Tue, 25 Jun 2024 01:59:23 +0330</pubDate><guid>https://omid.dev/2024/06/25/building-a-decentralized-application-dapp-with-angular-and-ethereum/</guid><description>&lt;p&gt;In recent years, decentralized applications (DApps) have emerged as a groundbreaking paradigm in the world of software development. Unlike traditional applications that run on centralized servers, DApps operate on blockchain technology, which offers enhanced security, transparency, and decentralization. This guide will walk you through the process of creating a DApp using Angular and Ethereum, including smart contract development with Solidity.&lt;/p&gt;
&lt;h2 id="what-is-a-decentralized-application-dapp"&gt;What is a Decentralized Application (DApp)?&lt;/h2&gt;
&lt;p&gt;A DApp is an application that runs on a decentralized network, typically a blockchain. Unlike conventional applications, DApps leverage the decentralized nature of blockchain to provide a higher level of security and trust. Key features of DApps include:&lt;/p&gt;</description></item><item><title>Building a Real-Time Collaborative Editor with Angular, Firebase, and WebRTC: A Step-by-Step Guide</title><link>https://omid.dev/2024/06/24/realtime-collaborative-editor-with-angular-firebase-webrtc/</link><pubDate>Mon, 24 Jun 2024 02:03:44 +0330</pubDate><guid>https://omid.dev/2024/06/24/realtime-collaborative-editor-with-angular-firebase-webrtc/</guid><description>&lt;p&gt;Creating a real-time collaborative text editor can be a challenging but rewarding project. In this guide, we&amp;rsquo;ll walk you through the process of building a real-time collaborative editor using Angular, Firebase, and WebRTC. By the end of this tutorial, you’ll have a working understanding of these technologies and how to integrate them to create a seamless, real-time collaborative experience.&lt;/p&gt;
&lt;aside class="companion-card"&gt;
&lt;span class="companion-card__icon" aria-hidden="true"&gt;
&lt;i class="fa-solid fa-cubes-stacked"&gt;&lt;/i&gt;
&lt;/span&gt;
&lt;span class="companion-card__content"&gt;
&lt;span class="companion-card__eyebrow"&gt;Companion resource&lt;/span&gt;
&lt;strong class="companion-card__title"&gt;Companion Project&lt;/strong&gt;
&lt;span class="companion-card__description"&gt;Explore the complete working example on GitHub.&lt;/span&gt;
&lt;code class="companion-card__path"&gt;github.com/omidfarhang/example-projects/angular-collaborative-editor-firebase-webrtc&lt;/code&gt;
&lt;/span&gt;
&lt;span class="companion-card__actions"&gt;
&lt;a class="companion-card__button companion-card__button--primary" href="https://github.com/omidfarhang/example-projects/tree/master/angular-collaborative-editor-firebase-webrtc" target="_blank" rel="noopener noreferrer"&gt;
&lt;i class="fa-brands fa-github" aria-hidden="true"&gt;&lt;/i&gt;
View on GitHub
&lt;/a&gt;
&lt;/span&gt;
&lt;/aside&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Real-time collaborative applications are increasingly popular in today&amp;rsquo;s digital world. They allow multiple users to work on the same document simultaneously, seeing each other&amp;rsquo;s changes in real time. Google Docs is a prime example of such an application. In this tutorial, we will build a similar application using modern web technologies.&lt;/p&gt;</description></item><item><title>Optimizing Angular Applications with Web Workers and OffscreenCanvas</title><link>https://omid.dev/2024/06/23/optimizing-angular-applications-with-web-workers-and-offscreencanvas/</link><pubDate>Sun, 23 Jun 2024 01:52:51 +0330</pubDate><guid>https://omid.dev/2024/06/23/optimizing-angular-applications-with-web-workers-and-offscreencanvas/</guid><description>&lt;p&gt;In today’s web development landscape, performance is king. Users expect fast, responsive applications that perform smoothly even under heavy loads. This expectation places a significant burden on developers, especially those working with complex front-end frameworks like Angular. One effective strategy for enhancing the performance of Angular applications is to leverage Web Workers and OffscreenCanvas. In this detailed guide, we will explore how to use these technologies to offload heavy computations and rendering tasks, thus optimizing your Angular applications for better performance.&lt;/p&gt;</description></item><item><title>Advanced Angular Change Detection: Strategies for High-Performance Applications</title><link>https://omid.dev/2024/06/19/advanced-angular-change-detection-strategies-for-high-performance-applications/</link><pubDate>Wed, 19 Jun 2024 01:14:27 +0330</pubDate><guid>https://omid.dev/2024/06/19/advanced-angular-change-detection-strategies-for-high-performance-applications/</guid><description>&lt;p&gt;When it comes to building high-performance applications with Angular, understanding and optimizing change detection is crucial. This blog post will delve into advanced change detection strategies that can help you optimize the performance of your Angular applications. We will cover the OnPush change detection strategy, the importance of immutability, and techniques for manual change detection.&lt;/p&gt;
&lt;h2 id="introduction-to-angular-change-detection"&gt;Introduction to Angular Change Detection&lt;/h2&gt;
&lt;p&gt;Change detection is a mechanism that Angular uses to keep the view in sync with the underlying model. Whenever a component&amp;rsquo;s state changes, Angular detects this change and updates the DOM accordingly. This process, while automated and convenient, can become a performance bottleneck if not managed properly, especially in large and complex applications.&lt;/p&gt;</description></item><item><title>Advanced Dependency Injection Techniques in Angular: Tree-Shakable Providers and Injection Tokens</title><link>https://omid.dev/2024/06/17/advanced-dependency-injection-techniques-in-angular-tree-shakable-providers-and-injection-tokens/</link><pubDate>Mon, 17 Jun 2024 02:16:21 +0330</pubDate><guid>https://omid.dev/2024/06/17/advanced-dependency-injection-techniques-in-angular-tree-shakable-providers-and-injection-tokens/</guid><description>&lt;p&gt;Dependency Injection (DI) is a fundamental design pattern in Angular that allows for the efficient management of dependencies within an application. By using DI, Angular promotes the principle of Inversion of Control (IoC), where the control of creating and managing dependencies is inverted from the component itself to an external framework. This results in more modular, testable, and maintainable code. In this post, we will explore two advanced DI techniques in Angular: Tree-Shakable Providers and Injection Tokens.&lt;/p&gt;</description></item><item><title>Security Best Practices in Angular: Protecting Your Applications</title><link>https://omid.dev/2024/06/03/security-best-practices-in-angular-protecting-your-applications/</link><pubDate>Mon, 03 Jun 2024 03:24:43 +0330</pubDate><guid>https://omid.dev/2024/06/03/security-best-practices-in-angular-protecting-your-applications/</guid><description>&lt;p&gt;In the world of web development, security is paramount. As developers, we strive to build robust and secure applications that protect user data and ensure a seamless user experience. Angular, being one of the most popular frameworks for building web applications, offers several features and best practices to enhance the security of your applications. In this post, we&amp;rsquo;ll delve into advanced security topics such as XSS protection, CSRF prevention, JWT authentication, and secure HTTP headers. Let&amp;rsquo;s explore how you can safeguard your Angular applications.&lt;/p&gt;</description></item><item><title>Building Custom Angular Schematics: Automating Code Generation</title><link>https://omid.dev/2024/06/03/building-custom-angular-schematics-automating-code-generation/</link><pubDate>Mon, 03 Jun 2024 02:13:06 +0330</pubDate><guid>https://omid.dev/2024/06/03/building-custom-angular-schematics-automating-code-generation/</guid><description>&lt;p&gt;In the fast-paced world of web development, efficiency and consistency are key. Repetitive tasks can slow down productivity, and inconsistent code can lead to maintenance nightmares. Enter Angular Schematics—a powerful tool to automate code generation, enforce architectural standards, and improve code quality. In this comprehensive guide, we&amp;rsquo;ll delve into creating custom Angular schematics, helping you streamline your development workflow and ensure your codebase remains robust and maintainable.&lt;/p&gt;
&lt;aside class="companion-card"&gt;
&lt;span class="companion-card__icon" aria-hidden="true"&gt;
&lt;i class="fa-solid fa-cubes-stacked"&gt;&lt;/i&gt;
&lt;/span&gt;
&lt;span class="companion-card__content"&gt;
&lt;span class="companion-card__eyebrow"&gt;Companion resource&lt;/span&gt;
&lt;strong class="companion-card__title"&gt;Companion Project&lt;/strong&gt;
&lt;span class="companion-card__description"&gt;Explore the complete working example on GitHub.&lt;/span&gt;
&lt;code class="companion-card__path"&gt;github.com/omidfarhang/example-projects/angular-custom-schematics&lt;/code&gt;
&lt;/span&gt;
&lt;span class="companion-card__actions"&gt;
&lt;a class="companion-card__button companion-card__button--primary" href="https://github.com/omidfarhang/example-projects/tree/master/angular-custom-schematics" target="_blank" rel="noopener noreferrer"&gt;
&lt;i class="fa-brands fa-github" aria-hidden="true"&gt;&lt;/i&gt;
View on GitHub
&lt;/a&gt;
&lt;/span&gt;
&lt;/aside&gt;
&lt;h2 id="what-are-angular-schematics"&gt;What are Angular Schematics?&lt;/h2&gt;
&lt;p&gt;Angular Schematics are code generators that transform a software project by creating, modifying, or removing files and code snippets. They&amp;rsquo;re integral to the Angular CLI (Command Line Interface) and are used to scaffold new applications, add features, and enforce best practices.&lt;/p&gt;</description></item><item><title>Integrating GraphQL with Angular: A Practical Guide</title><link>https://omid.dev/2024/06/01/integrating-graphql-with-angular-a-practical-guide/</link><pubDate>Sat, 01 Jun 2024 00:50:01 +0330</pubDate><guid>https://omid.dev/2024/06/01/integrating-graphql-with-angular-a-practical-guide/</guid><description>&lt;p&gt;GraphQL is a powerful query language for APIs, providing a flexible and efficient alternative to REST. Combining it with Angular, a robust front-end framework, can lead to highly dynamic and responsive web applications. In this guide, we&amp;rsquo;ll explore how to integrate GraphQL with Angular, leveraging the Apollo Client for seamless data management.&lt;/p&gt;
&lt;aside class="companion-card"&gt;
&lt;span class="companion-card__icon" aria-hidden="true"&gt;
&lt;i class="fa-solid fa-cubes-stacked"&gt;&lt;/i&gt;
&lt;/span&gt;
&lt;span class="companion-card__content"&gt;
&lt;span class="companion-card__eyebrow"&gt;Companion resource&lt;/span&gt;
&lt;strong class="companion-card__title"&gt;Companion Project&lt;/strong&gt;
&lt;span class="companion-card__description"&gt;Explore the complete working example on GitHub.&lt;/span&gt;
&lt;code class="companion-card__path"&gt;github.com/omidfarhang/example-projects/angular-graphql-apollo&lt;/code&gt;
&lt;/span&gt;
&lt;span class="companion-card__actions"&gt;
&lt;a class="companion-card__button companion-card__button--primary" href="https://github.com/omidfarhang/example-projects/tree/master/angular-graphql-apollo" target="_blank" rel="noopener noreferrer"&gt;
&lt;i class="fa-brands fa-github" aria-hidden="true"&gt;&lt;/i&gt;
View on GitHub
&lt;/a&gt;
&lt;/span&gt;
&lt;/aside&gt;
&lt;h2 id="1-introduction-to-graphql-and-angular"&gt;1. Introduction to GraphQL and Angular&lt;/h2&gt;
&lt;h3 id="what-is-graphql"&gt;What is GraphQL?&lt;/h3&gt;
&lt;p&gt;GraphQL is an open-source data query language developed by Facebook. It allows clients to request exactly the data they need, making APIs more flexible and efficient.&lt;/p&gt;</description></item><item><title>Design Patterns in Angular: Enhancing Code Quality and Maintainability</title><link>https://omid.dev/2024/05/31/design-patterns-in-angular-enhancing-code-quality-and-maintainability/</link><pubDate>Fri, 31 May 2024 23:52:23 +0330</pubDate><guid>https://omid.dev/2024/05/31/design-patterns-in-angular-enhancing-code-quality-and-maintainability/</guid><description>&lt;p&gt;Angular, one of the most popular frameworks for building robust web applications, provides a comprehensive toolkit for developers. However, to truly harness its power, understanding and applying design patterns is crucial. Design patterns offer proven solutions to common problems, making your code more organized, reusable, and maintainable. In this blog post, we’ll delve into some advanced design patterns and their application in Angular, helping you enhance your code quality and maintainability.&lt;/p&gt;</description></item></channel></rss>