Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

179
Views
observable indefinido en componente - Angular

Tengo un servicio que se conecta con api.

 export class ConsolidadoApi { constructor(private http: HttpClient) { } getInvestiments(search?: any): Observable<any> { return this.http.get<any>(`${environment.basePosicaoConsolidada}`); } }

Responde esta API:

https://demo5095413.mockable.io/consolidado

Este es el responsable de la lógica antes de llegar al componente.

 @Injectable({ providedIn: 'root' }) export class CoreService { public test; constructor(private api: ConsolidadoApi, private state: StateService) { } public createMenu() { this.api.getInvestiments() .subscribe(response => { console.log(response.carteiras[0]) this.products = response.carteiras[0] return this.products; }) }

En mi componente

 export class MenuComponent implements OnInit { constructor( private coreService : CoreService ) {} ngOnInit(): void { console.log(this.coreService.createMenu()) } }

Pero cuando se llama a createMenu en menu.component.ts, no está definido.

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

La respuesta cruda es un objeto. forEach solo funciona en una matriz. Si está apuntando a forEach en 'categorías', debería intentar

 this.test.categorias.forEach()
about 4 years ago · Juan Pablo Isaza Report

0

Cuando devuelves Observable<any> , eso significa que el argumento de la lambda que creas cuando te subscribe (que nombraste response ) es type any . No es necesario que tenga definida la función forEach (a menos que la API devuelva un objeto con ese prototipo). Generalmente es por eso que usar any no es una buena práctica; no puede tener ninguna expectativa sobre lo que puede contener el objeto. De hecho, es posible que no esté en el objeto (podría ser una matriz ya que any no es exclusivamente un objeto). Si desea utilizar forEach , querrá asegurarse de que la response sea de tipo array . Puede inspeccionar el tipo de objeto antes de usarlo (por ejemplo, usando typeof ) y juzgar qué llamar o incluso simplemente verificar si la función que está tratando de usar está definida primero, por ejemplo, if (response.forEach !== undefined) . Sin embargo, en realidad no necesita comparar con undefined, por lo que if (response.forEach) es suficiente. En los ejemplos, usé response , pero puede usar this.test ya que son el mismo objeto después de la primera línea en la lambda.

about 4 years ago · Juan Pablo Isaza Report

0

Según el enlace que compartió, la respuesta es un objeto. Puede iniciar sesión en la consola para confirmar.

Solo puede llamar a cada uno en una matriz, por ejemplo, en función de la API de respuesta, puede llamar a forEach en la propiedad 'categorias' y en la propiedad secundaria de esa matriz 'produtus'

Editar: esta respuesta se basó en la API y la pregunta originales de op

https://demo5095413.mockable.io/carteira-investimentos

 public createMenu() { return this.api.getInvestiments() } ngOnit() { this.coreService.createMenu().subscribe(x => console.log(x.categorias))}; { "codigo":1, "categorias":[ { "nome":"Referenciado", "valorTotal":23000.0, "codigo":"2", "produtos":[ { "nome":"CDB Fácil Bradesco", "valor":2000.0, "codigo":1, "quantidade":0.0, "porcentagem":0.5500, "aplicacaoAdicional":500.0, "codigoInvest":1, "salaInvestimento":"CDB", "permiteAplicar":true, "permiteResgatar":true, "movimentacaoAutomatica":false, "ordemApresentacao":37, "horarioAbertura":"08:30", "horarioFechamento":"23:59", "codigoGrupo":0, "codigoMF":"001
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!