NetanelBasal
7/25/2017 - 7:57 AM

rx-reselect2.ts

@Injectable()
class TodosQuery {

  getVisibilityFilter$ = this.store.select(state => state.visibilityFilter);
  getTodos$ = this.store.select(state => state.todos);

  getVisibleTodos$ = Observable.combineLatest(
    getVisibilityFilter$, getTodos$, this.getVisibleTodos
  )

  private getVisibleTodos = (visibilityFilter, todos) => {
      switch (visibilityFilter) {
        case 'SHOW_ALL':
          return todos
        case 'SHOW_COMPLETED':
          return todos.filter(t => t.completed)
        case 'SHOW_ACTIVE':
          return todos.filter(t => !t.completed)
      }
  }

  constructor(private store: Store<AppState>) {}
    
}