Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

178
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda