Reactive Enum
A tool to automatically generate a typed reactive enum with Rx
Not yet production ready.
Install
npm i @ngbites/reactive-enum
Usage
This utility is particularly useful with framework such as Angular to
automatically generate a set of reactive streams, so that you can use them
in your template effortlessly.
This basically replaces using a BehaviorSubject
property followed by auxiliary
methods such as:
import { BehaviorSubject } from 'rxjs';
class MyComponent {
private readonly status$ = new BehaviorSubject<Status>(Status.Initial);
private readonly initial$ = this.status$.pipe(map(status => status ===
Status.Initial));
private readonly pending$ = this.status$.pipe(map(status => status ===
Status.Pending));
}
Basic Usage
enum Status {
Initial,
Pending,
Success,
Error
}
const status = reactiveEnum(Status);
status.initial$.subscribe();
status.pending$.subscribe();
status.success$.subscribe();
status.error$.subscribe();
status.set(Status.Initial);
Passing an initial value
const status = reactiveEnum(Status, {
initialValue: Status.Initial,
});
status.value$.subscribe(console.log);
Updating the value
const status = reactiveEnum(Status);
status.value$.subscribe(console.log);
status.set(Status.Success);
Resetting to the original value
const status = reactiveEnum(Status, {
initialValue: Status.Initial
});
status.value$.subscribe(console.log);
status.set(Status.Success);
status.reset();