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

Imagens não estão sendo puxadas da Api, apresenta os seguintes erros:

Build at: 2021-05-18T02:27:04.342Z - Hash: 96bdf2b1efee415730e6 - Time: 1912ms

./src/app/app.module.ts:5:0-55 - Error: Module not found: Error: Can't resolve '@angula/common/http' in 'C:\xampp2\htdocs\alura\aula_angular\alurapic\src\app'
Error: src/app/app.component.html:1:1 - error NG8001: 'ap-photo' is not a known element:
1. If 'ap-photo' is an Angular component, then verify that it is part of this module.
2. If 'ap-photo' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.

1 <ap-photo
  ~~~~~~~~~
2   *ngFor="let photo of photos"
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3   [url]="photo.url"
  ~~~~~~~~~~~~~~~~~~~
4   [description]="photo.description">
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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


Error: src/app/app.component.html:3:3 - error NG8002: Can't bind to 'url' since it isn't a known property of 'ap-photo'.
1. If 'ap-photo' is an Angular component and it has 'url' input, then verify that it is part of this module.
2. If 'ap-photo' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.

3   [url]="photo.url"
    ~~~~~~~~~~~~~~~~~

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


Error: src/app/app.component.html:4:3 - error NG8002: Can't bind to 'description' since it isn't a known property of 'ap-photo'.
1. If 'ap-photo' is an Angular component and it has 'description' input, then verify that it is part of this module.
2. If 'ap-photo' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.

4   [description]="photo.description">
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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


Error: src/app/app.module.ts:4:34 - error TS2307: Cannot find module '@angula/common/http' or its corresponding type declarations.

4 import { HttpClientModule } from '@angula/common/http';
                                   ~~~~~~~~~~~~~~~~~~~~~


Error: src/app/app.module.ts:14:12 - error NG1010: Value at position 2 in the NgModule.imports of AppModule is not a reference
  Value could not be determined statically.

 14   imports: [
               ~
 15     BrowserModule,
    ~~~~~~~~~~~~~~~~~~
...
 17     HttpClientModule
    ~~~~~~~~~~~~~~~~~~~~
 18   ],
    ~~~

  src/app/app.module.ts:17:5
    17     HttpClientModule
           ~~~~~~~~~~~~~~~~
    Unknown reference.

Atualmente estou na aula 3 - atividade7. Estou tentando consumidor dos dados da API. Informando ainda que estou trabalhando na versão 14.16.1, pois o node não estava permitindo trabalhar na versão indicada pelo curso. Como devo proceder para continuar o curso?

5 respostas

Olá, Jorge! Tudo bem?

Em app.module.ts, faltou o "r" de "angular" em import { HttpClientModule } from '@angular/common/http';, e por isso o Angular não reconhece HttpClientModule.

Também confirme que o PhotosModule está corretamente sendo importado, pois aparentemente o Angular não conseguiu encontrar o componente. Se não conseguir, manda aqui o código do app.module.tse do photo.component.ts.

Espero ter ajudado!

Em app.module.ts realmente estava faltando o "r" em angular. Desculpe por não ter visto. No entanto a api ainda mostra os seguintes erros:

Browser application bundle generation complete.

Initial Chunk Files | Names  |     Size
vendor.js           | vendor |  2.17 MB
main.js             | main   | 11.83 kB

3 unchanged chunks

Build at: 2021-05-18T14:18:09.524Z - Hash: ce7eaf4cd8b4a168670c - Time: 1950ms

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

3   [url]="photo.url"
                 ~~~

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


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

4   [description]="photo.description">
                         ~~~~~~~~~~~

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

Aqui esta~ão o códigos dos arquivos pedidos.

app.module.ts:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http';

//Acima estão os imports do Angular e abaixo os meus imports
import { PhotosModule } from './photos/photos.module';


@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    PhotosModule,
    HttpClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

e photo.component.ts

import { Component, Input } from "@angular/core";

@Component({

  selector: 'ap-photo',
  templateUrl: 'photo.component.html'

})

export class PhotoComponent{
  @Input() description=  '';
  @Input() url='';
}

Obrigado pela ajuda.

Parece que o colega que fez esse pergunta https://cursos.alura.com.br/forum/topico-failed-to-compile-src-app-app-component-html-3-14-error-ts2339-property-url-does-not-exist-on-type-object-151688 passou pela mesma situação. Foi informado que é preciso fazer a tipagem da url, mas sabe me informar onde devo fazer essa tipagem? Em qual arquivo?

solução!

Sim, realmente, talvez funcione se você tipar. Você pode adicionar uma interface no app.component.ts. Porque no seu erro, o TypeScript não acha que o objeto tenha essas propriedades quando você tenta acessá-las no app.component.html (quando passa em foto por foto da array de fotos).

Então, no app.component.ts, fora da classe:

interface Photo {
  url: string
  description: string
}

E no mesmo arquivo, onde você declara a array de fotos:

photos: Photo[] = [];

Espero que resolva!

Resolvido! Meu app.componet.ts está da seguinte maneira:

export class AppComponent {

  photos:  Photo[] = [];

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


}

interface Photo{
  url: string
  description: string
}

Obrigado pela ajuda e espero que esta pergunta seja útil para outras pessoas :)