Skip to content

Latest commit

 

History

History
113 lines (93 loc) · 2.5 KB

File metadata and controls

113 lines (93 loc) · 2.5 KB
description
Things we Need

State

States

{% tabs %} {% tab title="state/app.state.ts" %}

import { IEntityState } from '@briebug/ngrx-auto-entity';
import { ActionReducerMap } from '@ngrx/store';

import { Customer, Order } from '../models';
import { customerReducer } from './customer.state';
import { orderReducer } from './order.state';

export interface AppState {
    customer: IEntityState<Customer>;
    order: IEntityState<Order>;
}

export function appReducer: ActionReducerMap<AppState> = {
    customer: customerReducer,
    order: orderReducer
};

{% endtab %}

{% tab title="state/customer.state.ts" %}

import { buildState, IEntityState } from '@briebug/ngrx-auto-entity';
import { createReducer } from '@ngrx/store';
import { Customer } from 'models';

export const { 
  initialState: customerInitialState, 
  facade: CustomerFacadeBase 
} = buildState(Customer);

export function customerReducer(state = initialState): IEntityState<Customer> {
  return state;
}

{% endtab %}

{% tab title="state/order.state.ts" %}

import { buildState, IEntityState } from '@briebug/ngrx-auto-entity';
import { createReducer } from '@ngrx/store';
import { Order } from 'models';

export const { 
  initialState: orderInitialState, 
  facade: OrderFacadeBase 
} = buildState(Order);

export function orderReducer(state = initialState): IEntityState<Order> {
  return state;
}

{% endtab %}

{% tab title="state/line-item.state.ts" %}

import { createReducer } from '@ngrx/store';
import { LineItem } from 'models';

export const { 
  initialState: orderInitialState, 
  facade: OrderFacadeBase,
  selectors: {
    selectAll: allLineItems
  }
} = buildState(Order);

export function orderReducer(state = initialState): IEntityState<Order> {
  return state;
}

{% endtab %} {% endtabs %}

Module

{% code title="state/state.module.ts" %}

import { NgModule } from '@angular/core';
import { NgrxAutoEntityModule } from '@briebug/ngrx-auto-entity';
import { EffectsModule } from '@ngrx/effects';
import { StoreModule } from '@ngrx/store';

import { appReducer } from './app.state';

@NgModule({
  imports: [
    StoreModule.forRoot(appReducer, {
      runtimeChecks: {
        strictStateImmutability: true,
        strictActionImmutability: true,
        strictStateSerializability: true,
        strictActionSerializability: false,
      },
    }),
    EffectsModule.forRoot([]),
    NgrxAutoEntityModule.forRoot()
  ]
})
export class StateModule {}

{% endcode %}