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 { tiposEnElContenedor : 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 . tiposEnElContenedor = this . datosService . getTipos ( ) ; this . movimiento = this . datosService . getNuevoMovimiento ( ) ; this . cambiarTipoDelMovimiento ( ) ; this . movimientos$ = this . datosService . getMovimientos$ ( ) ; this . movimientos$ . subscribe ( d => this . movimientos = d ) ; this . movimientos$ . subscribe ( function ( valorConcretoDelArrayDeMovimientos ) { this . movimientos = valorConcretoDelArrayDeMovimientos ; } ) ; } /** 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 ( ) { console . log ( `Guardando ${ JSON . stringify ( this . movimiento ) }` ) ; this . datosService . postMovimiento ( this . movimiento ) ; } }