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

348
Views
Angular 12 cómo devolver una matriz de objetos de solicitud de obtención http y asignar a otra matriz de diferente tipo usando map ()

Oye, estoy tratando de implementar un menú desplegable bootstrap5 siguiendo este ejemplo: Creación de un menú desplegable de selección múltiple con Angular y Bootstrap 5 En ese ejemplo, para obtener los datos, usa un servicio de aplicación y solo devuelve una matriz de objetos:

 getFoods(): Food[] { return [ { id: 1, name: 'Grapes' }, { id: 2, name: 'Melon' }, ...

Y luego, en su ngOnInit() llama al método getFoods() y también usa el operador .map() porque tiene que asignar valores porque el modelo de artículo tiene dos valores:

 ngOnInit(): void { this.items = this.appService.getFoods().map(fruit => ({ id: fruit.id, name: fruit.name } as Item)); }

Así que estoy tratando de hacer sombrero, pero con los datos que se obtienen de un punto final de la API mediante la solicitud HTTP GET. Pero no sé cómo usar el operador .map() para la solicitud de obtención de http:

 this.subscription = this.contactSearchService.currentCodes.pipe( map( code => ( { id: code.code, name: code.code } ) )).subscribe(Response => { this.items = Response })

Me esta dando estos errores:

 Property 'code' does not exist on type 'ResponsibilityCode[]'. Type '{ id: any; name: any; }' is missing the following properties from type 'Item[]': length, pop, push, concat, and 26 more.

Mi función de solicitud de obtención de http:

 private _reponsibilityCodeSource = new BehaviorSubject<ResponsibilityCode[]>([]); currentCodes = this._reponsibilityCodeSource.asObservable(); getCodes(): void { this.http.get<ResponsibilityCode[]>('https://localhost:44316/api/SITEContacts/ResponsibilityCode').subscribe(Response => { this._reponsibilityCodeSource.next(Response); }); } I get the data as `JSON` btw.
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

La pipe(map(.... code...)) es diferente de array.map: la pipe(map()) no opera en cada elemento de una matriz

Entonces, los errores que está recibiendo se deben a que está intercambiando la matriz de ResponsibilityCode por un solo elemento (el code en su código son todos los códigos de responsabilidad)

Probar

 this.subscription = this.contactSearchService.currentCodes.subscribe(Response => { this.items = Response.map( code => ( { id: code.code, name: code.code } ) ) })
about 4 years ago · Juan Pablo Isaza Report

0

Su obtención de HTTP devuelve una matriz Observable of ResponsibilityCode , por lo que para lograrlo debe map ( Array.prototype.map ) los elementos de la matriz dentro del operador de mapa de RxJS, como el siguiente:

 this.subscription = this.contactSearchService.currentCodes .pipe( map((res: ResponsibilityCode[]) => res.map((item) => ({ id: item.id, name: item.name, })) ) ) .subscribe((res) => { this.items = res; });
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!