NetanelBasal
3/3/2017 - 9:04 AM

todos-page-final.component.ts

export class TodosPageComponent {
  todos$ : Observable<any>;
  activeFilter$ : Observable<any>;
  addTodoSuccess$ : Observable<any>;

  filters = [...];

  constructor( private store : Store<any>, private todosEffects : TodosEffects ) {
    this.store.dispatch(getTodos());
    this.activeFilter$ = store.select("visibilityFilter").take(1);
    this.todos$ = store.select("todos");
    this.addTodoSuccess$ = this.todosEffects.addTodo$.filter(( {type} ) => type === ADD_TODO_SUCCESS);
  }

  changeFilter( filter ) {
    this.store.dispatch(setVisibilityFilter(filter));
    this.store.dispatch(getTodos());
  }

  toggle( todo ) {
    this.store.dispatch(toggleTodo(todo));
  }

  addTodo( todo ) {
    this.store.dispatch(addTodo(todo));
  }

}