import { Component , OnInit } from '@angular/core' ; import { MaestroModel , MaestroTipoModel , Movimiento } from './datos.model' ; import { DatosService } from './datos.service' ; import { Observable } from 'rxjs/Observable' ; @ Component ( { selector : 'app-movimientos' , templateUrl : './movimientos.component.html' , styleUrls : [ './movimientos.component.css' ] } ) export class MovimientosComponent implements OnInit { tipos : MaestroModel [ ] = [ ] ; categorias : MaestroTipoModel [ ] = [ ] ; movimiento : Movimiento ; movimientos : Movimiento [ ] ; movimientos$ : Observable < Movimiento [ ] > ; /** Depende del servicio de datos */ constructor ( private datosService ) { } /** Al arrancar, obtiene datos estáticos y suscripciones a otros vivos */ ngOnInit ( ) { this . movimiento = this . datosService . getNuevoMovimiento ( ) ; this . refrescarMovimientos ( ) ; let tipos$ = this . datosService . getTipos ( ) ; tipos$ . subscribe ( tipos => { this . tipos = tipos ; this . datosService . getCategorias ( ) . subscribe ( categorias => { this . categorias = this . datosService . getCategoriasPorTipo ( this . movimiento . tipo ) ; } ) ; } ) ; } refrescarMovimientos ( ) { this . movimientos$ = this . datosService . getMovimientos$ ( ) ; this . movimientos$ . subscribe ( movimientos => this . movimientos = movimientos ) ; } /** Cuando ocurre un cambio en el tipo de movimiento */ cambiarTipoDelMovimiento ( ) { this . categorias = this . datosService . getCategoriasPorTipo ( this . movimiento . tipo ) ; this . movimiento . categoria = this . datosService . getCategoriaBase ( this . movimiento . tipo ) ; } /** Cuando se quiere guardar un movimiento */ guardarMovimiento ( ) { this . datosService . postMovimiento ( this . movimiento ) . subscribe ( result => this . refrescarMovimientos ( ) ) ; } }