Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save wesleygrimes/72a4bb87a4adb05ec57552d23d703024 to your computer and use it in GitHub Desktop.
Save wesleygrimes/72a4bb87a4adb05ec57552d23d703024 to your computer and use it in GitHub Desktop.
Entity Feature Module - Selectors
import {
createFeatureSelector,
createSelector,
MemoizedSelector
} from '@ngrx/store';
import { MyModel } from '../models';
import { featureAdapter, State } from './state';
export const getError = (state: State): any => state.error;
export const getIsLoading = (state: State): boolean => state.isLoading;
export const selectMyFeatureState: MemoizedSelector<
object,
State
> = createFeatureSelector<State>('myFeature');
export const selectAllMyFeatureItems: (
state: object
) => MyModel[] = featureAdapter.getSelectors(selectMyFeatureState).selectAll;
export const selectMyFeatureById = (id: string) =>
createSelector(this.selectAllMyFeatureItems, (allMyFeatures: MyModel[]) => {
if (allMyFeatures) {
return allMyFeatures.find(p => p.id === id);
} else {
return null;
}
});
export const selectMyFeatureError: MemoizedSelector<object, any> = createSelector(
selectMyFeatureState,
getError
);
export const selectMyFeatureIsLoading: MemoizedSelector<
object,
boolean
> = createSelector(selectMyFeatureState, getIsLoading);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment