Actions, effects, reducers, selectors and guards for ngrx-normalizr.
This package provides a set of Actions, effects, reducers, selectors and guards for using ngrx-normalizr entity states.
To install this package:
yarn add ngrx-normalizr-crud
npm i ngrx-normalizr-crud
ngrx-normalizr-crud uses @ngrx/store
and ngrx-normalizer
as peer dependencies, so you need to install them if not present already:
yarn add @ngrx/store ngrx-normalizer
npm i @ngrx/store ngrx-normalizer
Also refer to the Typedoc documentation.
import { createSelector, combineReducers } from '@ngrx/store';
import { createReducer } from 'ngrx-normalizr-crud';
import { User, userSchema } from '../classes/user';
const userEntity = createReducer<User>(userSchema);
export reducer = combineReducers({
//... other feature reducers
userEntity
})
// create an entity state selector
const featureSelector = createFeatureSelector<State>('users');
const getUserEntityState = createSelector(
featureSelector,
(state: State) => state.userEntity
);
export const entitySelectors = {
// pass the entity state selector
...createSelectors<User>(userSchema, getUserEntityState)
};
import { createActions } from 'ngrx-normalizr-crud';
import { User, userSchema } from '../classes/user';
export const actions = createActions<User>(userSchema);
import { EntityCrudEffect } from 'ngrx-normalizr-crud';
import { User, userSchema } from '../classes/user';
@Injectable()
export class UserCrudEffects extends EntityCrudEffect<User> {
constructor(private actions$: Actions, private http: HttpClient) {
super(actions$, userSchema);
}
@Effect()
searchEffect$ = this.createSearchEffect(action =>
this.http.get('/users')
);
// ...
}
Michael Krone – @DevDig – michael.krone@outlook.com
Distributed under the MIT license. See LICENSE
for more information.
https://github.com/michaelkrone/ngrx-normalizr
git checkout -b feature/fooBar
)git commit -am 'Add some fooBar'
)git push origin feature/fooBar
)Generated using TypeDoc