
Explore why we need signals by examining Angular's change detection, the role of zone.js, and the trade-offs of bypassing detection with RxJS before introducing signals.
Angular comes with a magic that we take for granted - the automatic change detection. This is the tool that is responsible for updating the DOM whenever we modify data that an element is bound to. To cleary see the effect of the automatic change detection - let's disable it by setting the change detection strategy to OnPush (which means that now the change detection is no longer fully automatic and does no occur all the time). Now we see that when the component property changes, the new value is not reflected in the DOM
When we use the OnPush strategy the change detection mechanism is triggered in one of two was:
1. When an Angular event, output, or input is triggered
2. When we use the ChangeDetectorRef and call it programatically
In this lecture we will understand when change detection means and how it is implemented. We will briefly discuss what ZoneJS does and how change detection is implemented using it. We will see the freqency in which change detection may execute and how it affects the performance of our applications.
Discover how the async pipe extracts observable values, triggers change detection automatically, and simplifies onpush change detection versus manual change detector handling in Angular.
Explore zone-less change detection in angular 18 using the experimental provider to remove zonejs, and apply onpush across components. See how signals replace behavior subjects for simple stateful services.
Explore the basics of signals, reactive data structures that notify changes. Create a writable signal, derive computed signals, and react with effects to understand how to use them.
Explore signals as simple writable boxes created with the signal function, unlike subjects, read by calling the signal, and bound in HTML with zone-less change detection.
explore writable signals created with the signal function and updated by set or update, then learn computed signals as read-only, derived from signals via expressions and caching.
Learn how effects respond to changes in writable and computed signals, with automatic subscriptions, batching, and safe patterns for asynchronous code and side effects; avoid modifying signals inside an effect.
Learn how to blend Angular signals with RxJS by converting signals to observables and back, using switchMap for asynchronous API calls, and handling initial values and reactive contexts.
Explore how modern Angular adopts functional programming with signals and the inject function, enabling type-inferred, function-based router guards, interceptors, and signal-driven inputs, outputs, and queries for cleaner code.
Learn how Angular 18's input function makes input properties reactive signals, enabling computed values without lifecycle hooks and enabling fine-grained change detection with on push change detection and zone-less application.
Explore Angular's model function to enable two-way binding between parent and child components using signals, replacing form controls with writable inputs and the banana in a box syntax.
Practice implementing communication between the app component and the option selector using inputs, outputs, and models by working with the provided project link in Stackblitz or locally.
Practice viewChild and contentChild with signals to locate inputs by view and content queries, and learn to use elementRef, native element, appManaged directives, and host binding and host listener.
Bind router data to component inputs with Angular's router input bindings, convert id strings to numbers via a transformer, and switch from observables to signals and computed values.
Develop hands-on skills binding router data into inputs by implementing a name details view that reads the route parameter and derives two computed signals: uppercase name and name length.
Learn to manage state with signal based stateful services by dividing into core writable and derived computed parts, exposing writable state as read-only, and using RxJS for asynchronous updaters.
Build a stateful service to manage the quiz current state, including questions, answers, and progress, using Angular signals for reactive updates and to reduce boilerplate and manual subscriptions.
Define a stateful exam service using signals to hold questions and user answers, with derived state like current question, completion status, and score computed from core state.
Inject the exam store into the app component and consume its signals to drive app progress, current question state; render app done when finished, else present the app question presenter.
Trigger asynchronous API calls by using signals with RxJS observables to generate exams by difficulty level, cancel outdated results, and manage a busy indicator.
Reload a resource by triggering its reload method to re-invoke the loader function, producing a new promise and value, while states like loading and reloading ignore concurrent requests.
Explore resources with params by adding a params property and updating the loader to send param value to the API that multiplies by five, using the abort and source signals.
Code along to build the books store app with a client and server. Replace fake data with live server data using a stateful service and signals to drive loading indicators.
Create a stateful service to manage the app's state and asynchronous operations, define the API base and WebSocket base URLs, and inject the service into components for shared reactive state.
Implement asynchronous search with resource signals by fetching books via fetch, handling promises and abort signals, and exposing read-only search results for a responsive angular 20 app.
Explore httpResource in Angular 20 with signals to fetch data via http client, encoding parameters, and returning a books array, with experimental status.
Learn to stream data with rxResource by switching from promises to observables, using a WebSocket observable to deliver live stock updates and automatic cancellation on unsubscribe.
Code along with me to build signal forms in Angular 21, connect a writable signal model to the form, and run projects locally or via StackBlitz.
Explore how signal forms automate state management in Angular by creating a form object with the form function. The writable signal serves as the source of truth, replacing manual controls.
Explore how field trees and field states model UI state in signal forms, and how to conditionally apply the invalid css class when a field is invalid.
Apply conditional validation in modern Angular 21 with signals using the when option to enable the email required validator only when path.role is not author.
Use cross-field validation by making a threshold depend on another field, such as author vs user roles, with automatic reevaluation via a reactive context.
Explore cross-field and tree validation in Angular signals forms by using validateTree to attach errors to multiple fields, such as rating and recommendation, ensuring conflict rules are enforced.
Learn to conditionally disable or read-only the email field in an Angular forms schema using signals, with when context based on role, and plan removal for authors.
Explore how to conditionally hide fields in Angular forms using signals, and distinguish validation behavior for read-only, disabled, and hidden fields while updating the UI accordingly.
Build nested forms by adding two subforms for food and service, each with rating and recommendation, and learn maintainable form structures with reusability and signal forms.
Learn to validate nested properties with Angular form signals by applying min and max to path.food.rating, with clear messages; the session also previews moving toward reusable validation and form arrays.
Learn to work with form arrays in Angular by looping over review items and binding each to a subform. The aspect field replaces hardcoded titles, enabling lists and add-remove support.
Signal forms extend the form lifecycle to include the submission phase, representing progress and errors, preventing double submissions, and guiding users from submission to success or failure.
Learn how to submit a signals form with the submit function, using a root field tree and an action, or switch to a form tag with form root and type=submit.
Learn to handle invalid forms on submission with signals, manage nested validation errors via error summary, auto focus the first invalid field, and use on valid for alternate actions.
Explore submitting state in Angular with signals: simulate a four-second async submit via a review service, show submitting UI, disable the entire form, and display a success box on completion.
Explore how signal forms return server validation errors as a tree validation result, mapping field-specific errors from the review service and handling success as null.
Make the field wrapper automatically display errors by using content child to access the field directive and derive the field state and errors with computed signals.
Create a reusable sub-form component for editing ReviewItem objects. Drive the sub-forms with a reusable field tree input and header input, using signals to update the parent form.
Create reusable schemas for form sections using Angular signal forms, applying a review item schema to specific paths for centralized validation and reduced code duplication.
Explore how fields have metadata in signal forms, where the schema defines min and max ranges and UI controls auto-sync with data constraints, enabling dynamic, metadata driven UI without html attributes.
Create a custom star rating control using signal forms in Angular 21, leveraging Material Icons, computed signals, and two-way binding to replace native inputs with a field editor.
Implement a form value control for a custom field editor using a value model signal, and exposing optional min and max as inputs from the schema.
Discover how signal forms store custom validator metadata and expose it through field state, enabling minimum word thresholds to be read, displayed as hints, and reused across validators.
Explore how signal forms use schema-driven metadata and validators to define labels, hints, and constraints, enabling modular, maintainable forms in Angular 22.
Explore next steps after mastering signals, including state management with signals-focused libraries like NRW signals for complex real-life scenarios, and handling asynchronous API calls with RxJS when signals fall short.
Master Angular Signals: Modern Change Detection and Zoneless Applications
Modern Angular with Signals - The Missing Guide is a top-rated Udemy course by Kobi. It covers Angular 18-22’s latest APIs, with a focus on practical use of signals and zoneless architecture. This Udemy course is ideal for Angular developers with basic to advanced experience, or anyone transitioning from RxJS to the new signal-based APIs.
Unlock the full potential of Angular's newest feature - Signals. Learn the modern way to program in Angular using Signals, Standalone Architecture, the new functional APis, and all the latest features, including the ones introduced in Version 22.
Whether you're a beginner looking to understand signals or a seasoned Angular developer seeking to deepen your expertise, this Angular course teaches both theoretical insights and practical knowledge. By gaining a deep understanding of how signals work, you’ll gain the confidence to build efficient, scalable, and future-proof applications while avoiding common pitfalls.
First - understand why angular is moving to zoneless applications using signals. Dive into the fundamentals of the event loop, tasks, and how zone-based change detection works. You'll discover why Angular is shifting towards zoneless architectures and the challenges posed by using RxJS and push-based change detection in large-scale applications.
Then - meet signals. Learn about the basic primitives of signals, including their relationship to injection and reactive contexts. You’ll learn how to work with writable and computed signals, and how to implement effects and handle RxJS interoperability. You'll also discover Angular 19s "linkedSignal". These foundational concepts will help you start using signals effectively in your applications.
Once the basics are covered, we dive deep into how signals are implemented under the hood to give you a more advanced, intuitive understanding of their behavior. This deep understanding of how signals and injection contexts work will help you avoid the pitfalls of this seemingly simple feature, enabling you to use signals effectively and confidently.
Angular 18’s new signal-based component API is a game-changer for modern Angular development. In this course, you’ll learn how to integrate signals directly into your components, significantly improving performance and reducing complexity. We’ll explore how the deep understanding of signals and injection contexts is essential to mastering these APIs and avoiding common mistakes. With this knowledge, you’ll be able to build more efficient, responsive, and scalable components that take full advantage of Angular’s latest features.
Moving beyond components, we dive into building signal-based asynchronous services both with RxJs and with the Resource APIs. Learn through hands-on practical example, allowing you to apply everything you've learned throughout the course.
Learn the resource APIs that became stable in version 22: resource, httpResource and rxResource. You will see how to incorporate them into your reactive services. Learn how to build servies that hold data that relies on asynchronous http apis, and how to stream data into these resources using web sockets.
In Angular 22, The long awaited Signal Forms became stable. This course contains a full mini-course on signal forms. Now you can create truly dynamic forms that react to changes. You can change the structure or the validation rules dynamically dependeing on field values. You'll see how Signal Forms were built for reuse and allow you to build your form-heavy application in a Modular and standard way. Most importantly, it`s all based on signals and it`s all Zoneless-ready!
Ready to master Angular's most powerful features?
Enroll now and take your frontend skills to the next level!