Mapped Sub States
interface Animal {
type: string;
age: string;
name: string;
}
@State<Animal[]>({
name: 'animals',
defaults: [
{ type: 'zebra', age: 'old', name: 'Ponny' },
{ type: 'panda', age: 'young', name: 'Jimmy' }
]
})
@Injectable()
export class ZooState {
static pandas(age: string) {
return createSelector([ZooState], (state: Animal[]) => {
return state.filter(animal => animal.type === 'panda' && animal.age === age);
});
}
static zebras(age: string) {
return createSelector([ZooState], (state: Animal[]) => {
return state.filter(animal => animal.type === 'zebra' && animal.age === age);
});
}
static pandasAndZebras(age: string) {
return createSelector(
[ZooState.pandas(age), ZooState.zebras(age)],
(pandas: Animal[], zebras: Animal[]) => {
return [pandas, zebras];
}
);
}
}Last updated

