The Counter-Example stores an object as state
authorKai Moritz <kai@juplo.de>
Sun, 28 Jun 2020 21:21:15 +0000 (23:21 +0200)
committerKai Moritz <kai@juplo.de>
Sun, 5 Jul 2020 08:55:58 +0000 (10:55 +0200)
src/app/reducers/vorgang.ts
src/app/vorgang/vorgang.component.spec.ts
src/app/vorgang/vorgang.component.ts

index fbfe4e8..974efa5 100644 (file)
@@ -1,12 +1,22 @@
 import { createReducer, on } from '@ngrx/store';
 import { increment, decrement, reset } from '../actions/vorgang';
 
-export const initialState = 0;
+export interface State {
+  counter: number;
+}
+
+export const initialState: State = { counter: 0 };
 
 const REDUCER = createReducer(initialState,
-  on(increment, state => state + 1),
-  on(decrement, state => state - 1),
-  on(reset, state => 0),
+  on(increment, state => {
+    return { counter: state.counter + 1 };
+  }),
+  on(decrement, state => {
+    return { counter: state.counter - 1 };
+  }),
+  on(reset, state => {
+    return { counter: 0 };
+  }),
 );
 
 export function reducer(state, action) {
index 82595a0..0d41cdf 100644 (file)
@@ -8,7 +8,7 @@ describe('VorgangComponent', () => {
   let fixture: ComponentFixture<VorgangComponent>;
   let mockStore: MockStore;
 
-  const initialState = { vorgang: 0 };
+  const initialState = { vorgang: { counter: 0 } };
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
index 5af78d0..8324ca0 100644 (file)
@@ -1,7 +1,9 @@
 import { Component, OnInit } from '@angular/core';
 import { Store, select } from '@ngrx/store';
 import { Observable } from 'rxjs';
+import { State } from '../reducers/vorgang';
 import { increment, decrement, reset } from '../actions/vorgang';
+import { map } from 'rxjs/operators';
 
 @Component({
   selector: 'app-vorgang',
@@ -12,8 +14,8 @@ export class VorgangComponent implements OnInit {
 
   vorgang$: Observable<number>;
 
-  constructor(private store: Store<{ vorgang: number }>) {
-    this.vorgang$ = store.pipe(select('vorgang'));
+  constructor(private store: Store<{ vorgang: State }>) {
+    this.vorgang$ = store.pipe(select('vorgang'), map(vorgang => vorgang.counter));
   }
 
   ngOnInit(): void {