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

2.3K
Views
El tipo 'Objeto' no se puede asignar al tipo 'NgIterable<any> | nulo | indefinido'. en Angular 11

aprendiendo angular y mecanografiado por primera vez y no puedo entender por qué esto no es válido.

http.servicio.ts

 export class HttpService { constructor(private http: HttpClient) { } getBeer() { return this.http.get('https://api.openbrewerydb.org/breweries') } }

esa api devuelve un objeto

 the component its being used in: export class ListComponent implements OnInit { brews: Object; constructor(private _http: HttpService) { } ngOnInit() { this._http.getBeer().subscribe(data => { this.brews = data console.log(this.brews); } ) } }

me sale un error en la linea

 brews: Object;

que dice:

error TS2322: el tipo 'Objeto' no se puede asignar al tipo 'NgIterable | nulo | indefinido'. El tipo 'Objeto' es asignable a muy pocos otros tipos. ¿Querías usar el tipo 'cualquiera' en su lugar?

He intentado:

 brews: any;

y

 brews: Object[] = [];

Pero nada parece funcionar.

¿Alguien puede explicar dónde me estoy equivocando?

esa api devuelve un objeto, entonces, ¿por qué no puedo hacerlo?

 brews: Object;

la plantilla se utiliza para:

 <h1>Breweries</h1> <ul *ngIf="brews"> <li *ngFor="let brew of brews"> <p class="name">{{ brew.name }}</p> <p class="country">{{ brew.country }}</p> <a class="site" href="{{ brew.website_url }}">site</a> </li> </ul>
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Es una buena idea crear un tipo personalizado basado en sus data . Pero si insiste en usar el tipo anónimo, es posible que deba usar any[] para resolver el problema:

 brews: any[];

Y su servicio sería así:

 this._http.get('https://api.openbrewerydb.org/breweries').subscribe(data => { this.brews = data as any[] console.log(this.brews); }

Aquí hay una muestra de trabajo: StackBlitz

over 4 years ago · Santiago Trujillo Report

0

es una mala idea nombrar su servicio en el espacio de nombres restringido. httpservice no es un buen nombre para usar y podría generar algún problema extraño más adelante.

debe usar un sujeto de comportamiento que le permita compartir el objeto como un observable de todos los componentes.

Servicio

 export class BeerService { private beer = new BehaviorSubject<any>({}); public beer$ = this.beer.asObservable(); getBeer(){ this.http.get('https://api.openbrewerydb.org/breweries').pipe(map((res) => (res = res))).subscribe((sub) => { sub = sub; // set beer object next this.beer.next(sub) // , take(2) }) }

en tu componente

 constructor(beer:BeerService) {} ngOnInit(){ this.beer.beer$.subscribe((beer)=>{ this.beer = beer}) }

Puedes leer sobre temas de comportamiento aquí. https://www.learnrxjs.io/learn-rxjs/subjects/behaviorsubject

over 4 years ago · Santiago Trujillo 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!