DEV Community

Cover image for Unlock the Power of Reactive UIs in Angular with ngx-async-with-status Library
Emre Başkan
Emre Başkan

Posted on

Unlock the Power of Reactive UIs in Angular with ngx-async-with-status Library

Introduction

Angular, the popular JavaScript framework, empowers developers to create dynamic and robust web applications. However, handling asynchronous operations can sometimes be challenging. That's where the ngx-async-with-status library comes in, providing a seamless solution for managing async operations with added status tracking capabilities. In this article, we will explore the benefits of using ngx-async-with-status over the built-in Angular async and *ngrxLet approaches, showcasing how it simplifies asynchronous programming in Angular.

Installation

To install the ngx-async-with-status, run one of the following commands:

npm install ngx-async-with-status --save
Enter fullscreen mode Exit fullscreen mode
import { NgxAsyncWithStatusModule } from 'ngx-async-with-status';

@NgModule({
  declarations: [
    // Your components and directives
  ],
  imports: [
    // Other module imports
    NgxAsyncWithStatusModule
  ],
  // Other module configurations
})
export class YourModule { }
Enter fullscreen mode Exit fullscreen mode

asyncWithStatus Directive

The asyncWithStatus directive is an Angular directive that tracks the state of an observable value and renders different structural directives based on its state.
It provides a convenient way to handle asynchronous operations and display loading indicators, success messages, error messages, and other relevant UI components.

Usage

To use the asyncWithStatus directive, add it as an attribute directive on an HTML element and bind an observable value to it.
Then, use the structural directives provided by the asyncWithStatus directive to conditionally render content based on the state of the observable.

@Component({
  selector: 'some-component',
  templateUrl: './some-component.component.html',
})
class SomeComponent {
  public data$ = of({ title: 'test' }).pipe(delay(1000));
  public emptyData$ = of([]).pipe(delay(1000));
}
Enter fullscreen mode Exit fullscreen mode
<div [asyncWithStatus]="data$">
    <div *isLoading>
        loading.........
    </div>
    <div *isLoaded="let value">
        {{value?.title}}
    </div>
    <div *error="let error">
        {{error.message}}
    </div>
</div>

<div [asyncWithStatus]="emptyData$">
    <div *isLoading>
        loading.........
    </div>
    <div *isLoadedWithData="let value">
        Loaded
    </div>
    <div *isLoadedWithoutData>
        No Data Available
    </div>
    <div *error="let error">
        {{error.message}}
    </div>
</div>
Enter fullscreen mode Exit fullscreen mode

Why Choose ngx-async-with-status?

Enhanced Asynchronous Control:
The ngx-async-with-status library simplifies the management of asynchronous tasks in Angular by providing an intuitive interface. With its powerful features, you can easily handle loading states, errors, and results within your components, resulting in cleaner and more maintainable code. It abstracts away the complexities of asynchronous programming, allowing you to focus on building your application's logic.

Status Tracking Made Easy:

One standout feature of ngx-async-with-status is its ability to track the status of asynchronous operations effortlessly. Whether it's a request to an API, a data fetch from a database, or any other asynchronous task, you can easily monitor its progress through different states: loading, success, and error. This eliminates the need to manually handle loading indicators and error messages, reducing boilerplate code and enhancing code readability.

Integration with Angular Templates:

ngx-async-with-status seamlessly integrates with Angular templates, providing a declarative way to handle asynchronous data. By leveraging custom structural directives, you can conveniently specify how your component behaves during various stages of an async operation. This integration ensures consistency across your application and enhances the maintainability of your codebase.

Comparing with Angular Async and *ngrxLet:

Angular provides built-in mechanisms for handling async operations, such as the async pipe and the *ngrxLet directive. While these options are powerful, ngx-async-with-status brings additional advantages to the table.

Simplified Syntax:

When compared to the async pipe, ngx-async-with-status offers a more concise and intuitive syntax. Instead of scattering *ngIf and *ngFor directives throughout your template, ngx-async-with-status lets you define the behavior of your component in a single location, making your code easier to read and maintain.

Simplified Error Handling:

When handling errors with the built-in async approaches, you often need to write additional logic to manage and display error messages. With ngx-async-with-status, error handling becomes more straightforward. The library provides built-in error tracking, allowing you to display error messages or handle them in a centralized manner, thus reducing repetitive code and enhancing error management across your application.

Conclusion:

The ngx-async-with-status library offers a compelling solution for managing asynchronous operations in Angular applications. By simplifying async control and providing seamless status tracking capabilities, it helps developers build more maintainable and efficient code. Compared to the built-in Angular async approaches and *ngrxLet, ngx-async-with-status introduces a more straightforward syntax, increased flexibility, and simplified error handling. Give ngx-async-with-status a try in your next Angular project and experience the benefits of streamlined asynchronous programming.

To learn more about ngx-async-with-status, visit the official documentation and GitHub repository.

https://www.npmjs.com/package/ngx-async-with-status

https://github.com/thecoderdream/ngx-async-pipe-with-status

Happy coding!

Top comments (2)

Collapse
 
oreoyona profile image
oreoyona

Will try it soon. Great article!

Collapse
 
bkpecho profile image
Bryan King Pecho

Great article! ngx-async-with-status seems like an incredible library for managing async operations in Angular. It simplifies the code and provides intuitive status tracking. Well done!