11import { Component , OnInit } from '@angular/core' ;
2- import { Item , ItemsService } from '@workspace/common-data' ;
3- import { ActionsSubject , select , Store } from '@ngrx/store' ;
4- import { ItemsState } from '../../../../../libs/common-data/src/lib/state/items.reducer' ;
5- import * as ItemsActions from '../../../../../libs/common-data/src/lib/state/items.actions' ;
6- import { filter , tap } from 'rxjs/operators' ;
7- import { ItemsActionTypes } from '../../../../../libs/common-data/src/lib/state/items.actions' ;
8- import { selectAllItems } from '../../../../../libs/common-data/src/lib/state' ;
2+ import { Observable } from 'rxjs' ;
3+ import { Item , ItemsFacade } from '@workspace/common-data' ;
94
105@Component ( {
116 selector : 'app-items' ,
127 templateUrl : './items.component.html' ,
138 styleUrls : [ './items.component.css' ]
149} )
1510export class ItemsComponent implements OnInit {
16- items : Item [ ] ;
11+ items$ : Observable < Item [ ] > = this . itemsFacade . allItems$ ;
1712 currentItem : Item ;
1813
19- constructor ( private itemsService : ItemsService , private store : Store < ItemsState > , private actions$ : ActionsSubject ) { }
14+ constructor ( private itemsFacade : ItemsFacade , ) { }
2015
2116 ngOnInit ( ) {
22- this . getItems ( ) ;
23- this . handleActions ( ) ;
17+ this . itemsFacade . loadAll ( ) ;
18+ this . itemsFacade . mutations$ . subscribe ( _ => this . resetCurrentItem ( ) ) ;
2419 this . resetCurrentItem ( ) ;
2520 }
2621
27- handleActions ( ) {
28- this . actions$ . pipe (
29- filter ( action =>
30- action . type === ItemsActionTypes . AddItem
31- || action . type === ItemsActionTypes . UpdateItem
32- || action . type === ItemsActionTypes . DeleteItem
33- ) ,
34- tap ( _ => this . resetCurrentItem ( ) )
35- )
36- . subscribe ( ) ;
37- }
38-
3922 resetCurrentItem ( ) {
4023 this . currentItem = { id : null , name : '' , price : 0 , description : '' } ;
4124 }
@@ -44,26 +27,15 @@ export class ItemsComponent implements OnInit {
4427 this . currentItem = item ;
4528 }
4629
47- cancel ( item ) {
48- this . resetCurrentItem ( ) ;
49- }
50-
51- getItems ( ) {
52- this . store . pipe ( select ( selectAllItems ) )
53- . subscribe ( items => this . items = items ) ;
54-
55- this . store . dispatch ( new ItemsActions . LoadItems ( ) ) ;
56- }
57-
5830 saveItem ( item ) {
5931 if ( ! item . id ) {
60- this . store . dispatch ( new ItemsActions . AddItem ( item ) ) ;
32+ this . itemsFacade . addItem ( item ) ;
6133 } else {
62- this . store . dispatch ( new ItemsActions . UpdateItem ( item ) ) ;
34+ this . itemsFacade . updateItem ( item ) ;
6335 }
6436 }
6537
6638 deleteItem ( item ) {
67- this . store . dispatch ( new ItemsActions . DeleteItem ( item ) ) ;
39+ this . itemsFacade . deleteItem ( item ) ;
6840 }
6941}
0 commit comments