Bom dia!
tenho um retorno de um backend que esta retornando os valores corretamente parametros.service.ts
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { environment } from 'src/environments/environment';
import { Parametro } from './parametro.models';
const API = environment.urlAPI;
@Injectable({
providedIn: 'root'
})
export class ParametrosService {
private url = `${API}/parametros`
private listarParametros: Parametro[];
constructor(private httpClient: HttpClient) {
this.listarParametros = []
}
get parametros(){
return this.listarParametros
}
listaDeParametros(): Observable<Parametro[]>{
return this.httpClient.get<Parametro[]>(this.url)
}
}
no console.log o retorno esta correto, porem ao tentar acessar as propriedades do objeto o retorno vem como undefined. no caso eu preciso pegar a informação da propriedade "unidade" para inserir em outro campo do formulário, e não queria fazer outra consulta ao backend so para trazer essa informação
parametro.component.html
<label class="form" for="parametro" >Parametro</label>
<select class="form-control" (change)="change($event)" name="parametros">
<option value="0">-- Selecione --</option>
<option *ngFor="let parametros of listarParametros" value="{{ parametros | json }}">{{ parametros.parametro }}</option>
</select>
parametros.component.ts
import { ParametrosService } from './parametros.service';
import { Component, OnInit, EventEmitter, Output } from '@angular/core';
import { Parametro } from './parametro.models'
@Component({
selector: 'app-parametros',
templateUrl: './parametros.component.html',
styleUrls: ['./parametros.component.css']
})
export class ParametrosComponent implements OnInit {
listarParametros: Parametro[] = [];
parametros: any[];
@Output() aoSelecionar = new EventEmitter<any>();
constructor(private parametroService: ParametrosService) {
this.parametros = [];
}
ngOnInit(): void {
this.parametroService.listaDeParametros().subscribe(
(parametros) => { this.listarParametros = parametros }
);
}
change(e: any){
this.aoSelecionar.emit(e.target.value)
}
}
nova-coleta.component.html
<div class="col-md-3">
<app-parametros (aoSelecionar)="recebeParametro($event)"></app-parametros>
</div>
nova-coleta.component.ts
import { AnexoService } from './../services/anexos.service';
import { Component, Input, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Router } from '@angular/router';
import { Anexo } from '../models/anexos.models';
import { Parametro } from '../componentes/parametros/parametro.models';
import { Local } from '../componentes/locais/local.models';
@Component({
selector: 'app-nova-coleta',
templateUrl: './nova-coleta.component.html',
styleUrls: ['./nova-coleta.component.css']
})
export class NovaColetaComponent implements OnInit {
novaColetaForm!: FormGroup;
@Input() parametro_id!: Parametro;
@Input() local_id!: Local[];
msgAnexo: Anexo[] = [];
unidadeMedida: string = '';
constructor(
private formBuilder: FormBuilder,
private anexoService: AnexoService,
private router: Router,
) { }
ngOnInit(): void {
this.novaColetaForm = this.formBuilder.group(
{
amostrador: [''],
parametro_id: [''],
local_id: [''],
valor: [''],
dataColeta: ['']
}
)
}
recebeParametro(parametro_id: Parametro) {
const parametro = parametro_id;
console.log(parametro)
/* retorno do console.log
{
"id": 2,
"parametro": "Turbidez",
"periodicidade": "semanal/mensal",
"unidade": "uT",
"createdAt": "2022-06-08T11:52:28.000Z",
"updatedAt": "2022-06-08T11:52:28.000Z"
}
*/
/*
let parametro: Parametro = {
id: parametro_id.id,
parametro: parametro_id.parametro,
periodicidade: parametro_id.periodicidade,
unidade: parametro_id.unidade,
createdAt: parametro_id.createdAt,
updatedAt: parametro_id.updatedAt
}
console.log(parametro);
retorno do console.log // undefined
*/
}
recebeLocal(local_id: Array<Local>){
this.local_id = local_id;
console.log('local_id: ',this.local_id);
}
carregaAnexo(parametro_id: number, local_id: number){
this.anexoService.listaDeAnexo(parametro_id, local_id).subscribe(
(anexo: Anexo[]) => { this.msgAnexo = anexo}
);
console.log(this.msgAnexo);
}
submit(){
this.novaColetaForm.value.parametro_id = this.parametro_id;
this.novaColetaForm.value.local_id = this.local_id;
console.log(this.novaColetaForm.value);
}
}