README
NgxStoreDecorators for Angular

NgxStoreDecorators is a set of useful decorators and classes for quickly create NgRx store facades, assigning values, observables or observables values to class properties.
This package introduce:
@StoreSelect(), @StoreSubscribe(), @StoreDispatch() decorators
and StoreFacade abstract class for NgRx store maintaining,
@Select(), @Subscribe() decorators and WithSubscriptions abstract class
to assign observables or observables values and handle subscriptions,
also @Get() to assign values from injected classes method or properties.
Example
Sample store facade service:
@Injectable()
export class CounterFacadeService extends StoreFacade {
@StoreSelect(selectors.getCount)
public count$: Observable<number>;
@StoreSelect(selectors.getCountMutliplyBy)
public countMultiplyBy$: (multiplyBy: number) => Observable<number>;
@StoreSubscribe(selectors.getCount)
public count: number;
public constructor(protected store: Store<State>) {
super();
}
@StoreDispatch(actions.CounterSet)
public counterSet(payload: number) {}
}
without Store decorators and StoreFacade abstract class:
@Injectable()
export class CounterFacadeService {
public count$: Observable<number>;
public countMultiplyBy$: (multiplyBy: number) => Observable<number>;
public count: number;
public readonly subscriptions = new Subscription();
public constructor(protected store: Store<State>) {
this.count$ = this.store.pipe(select(selectors.getCount));
this.countMultiplyBy$ = (multiplyBy: number) => this.store.pipe(select(selectors.getCountMutliplyBy(multiplyBy)));
this.subscriptions.add(
this.store.pipe(select(selectors.getCount))
.subscribe(value => this.count = value));
}
public counterSet(payload: number): void {
this.store.dispatch(new actions.CounterSet(payload))
}
public unsubscribeAll(): void {
this.subscriptions.unsubscribe();
}
}
Sample usage in component or service:
@Component({
selector: 'app-basic-usage',
templateUrl: './basic-usage.component.html',
styleUrls: ['./basic-usage.component.scss']
})
export class BasicUsageComponent extends WithSubscriptions implements OnDestroy {
@Select(CounterFacadeService, 'count
