Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Consumir api da erro

Quando estou fazendo o subscribe ele reclama que o objeto não contém a descrição nem a url

Error: src/app/app.component.html:3:54 - error TS2339: Property 'url' does not exist on type 'Object'.

3 <app-photo *ngFor="let photo of photos" [url]="photo.url" [description]="photo.description"></app-photo>
                                                       ~~~

  src/app/app.component.ts:6:16
    6   templateUrl: './app.component.html',
                     ~~~~~~~~~~~~~~~~~~~~~~
    Error occurs in the template of component AppComponent.


Error: src/app/app.component.html:3:80 - error TS2339: Property 'description' does not exist on type 'Object'.

3 <app-photo *ngFor="let photo of photos" [url]="photo.url" [description]="photo.description"></app-photo>
                                                                                 ~~~~~~~~~~~

  src/app/app.component.ts:6:16
    6   templateUrl: './app.component.html',
                     ~~~~~~~~~~~~~~~~~~~~~~
    Error occurs in the template of component AppComponent.




✖ Failed to compile.
4 respostas

HTML

<h1>Bem vindo ao {{title}}!</h1>

<app-photo *ngFor="let photo of photos" [url]="photo.url" [description]="photo.description"></app-photo>

COMPONENT

import { Component } from '@angular/core';
import {HttpClient} from "@angular/common/http";

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'alurapic';

  photos: Object[] = []

  constructor(
    http: HttpClient
  ) {
    http.get<Object[]>('http://localhost:3000/flavio/photos')
      .subscribe(photos => this.photos = photos);
    console.log(this.photos);
  }


}

*OBS: *

Acabei de ver que o array está sendo enviado vazio. Não entendi, porque não estou fazendo o subscribe?

Fala Allan, tudo bem? Espero que sim!

Faltou utilizar a tipagem correta na propriedade photos, você tipa essa propriedade com o tipo Object[] ou seja, array de objeto genéricos, na qual não existe as propriedades que estamos acessando, sendo assim o typescript reclama de não haver essas propriedades, então para arrumar esse erro basta tipa-la com a interface Photo criada durante o curso:

})
export class AppComponent {
  title = 'alurapic';

  photos: Photo[] = []

  constructor(
    http: HttpClient
  ) {
    http.get<Object[]>('http://localhost:3000/flavio/photos')
      .subscribe(photos => this.photos = photos);
    console.log(this.photos);
  }


}

Espero ter ajudado, abraços e bons estudos :D

solução!

Então, essa interface de Photo não existe ainda. O que acontece é que no subscribe estou conseguindo os arquivos da api, mas ele não está salvando no array.

O do flávio também está tipado como Object[]