Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

350
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda