Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

363
Visualizações
¿Cómo modificar datos en Observable en Angular 2?

Estoy trabajando en aprender Angular 2 y Typescript. Estoy creando una aplicación web simple que toma datos de una API WEB y los muestra en una lista. Luego, una vez que el usuario hace clic en un elemento de la lista, se le lleva a una página de detalles.

Tengo un servicio que creé para hacer la llamada a la API que hace lo siguiente:

 GetData() { let data = this.http.get('http://server.name/api/GetData') .map((res) => res.json()); return data; }

Luego, en un componente, me suscribo a los datos como este:

 this.myService.GetData() .subscribe((myService) => this.items = myService);

Cuando regrese http.get, me gustaría realizar algún procesamiento en los objetos JSON antes de regresar del método GetData(). Por ejemplo, agregue una nueva propiedad llamada ID. Esencialmente algo como el pseudocódigo a continuación:

 for each(item in data) { item.ID = newID(); //method for creating IDs }
  1. ¿Es esto algo que se puede hacer?
  2. En caso afirmativo, ¿es algo que DEBE hacerse o hay una mejor manera de lograr lo que estoy tratando de hacer?

Gracias

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puede hacer el procesamiento en el código de su GetData, dentro del map :

 // For RxJS v5 this.http .get('http://server.name/api/GetData') .map(result => { const items = <any[]>result.json(); // could be SomeItem[] instead of any[] items.forEach(item => item.ID = ...); return items; }); // For RxJS v6 this.http .get('http://server.name/api/GetData') .pipe(map(result => { const items = <any[]>result.json(); // could be SomeItem[] instead of any[] items.forEach(item => item.ID = ...); return items; }));

Luego, cuando reciba el objeto en su suscripción, los elementos deben tener las identificaciones asignadas.

Aquí está la referencia a la documentación de RxJs Observable: http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-map

about 4 years ago · Santiago Trujillo Relatório

0

la idea es:

  • obtener el resultado
  • asigne el resultado para obtener solo el json
  • como su json es una matriz, produzca un Observable para cada dato, luego cambie su identificación y envíe los datos de vuelta
  • reunirlos de nuevo en una matriz

el operador mergeMap (reemplazado flatMap en rxjs 5.5+) se usa porque un operador Observable siempre devuelve un Observable, pero dado que creamos un Observable dentro del resultado mismo, produce un Observable>, mergeMap elimina una capa Observable. Espero que esto ayude

 GetData():Observable<WhateverWithIDInside[]> { let data = this.http.get('http://server.name/api/GetData') .map(res => res.json()) .mergeMap(dataArr => Observable.from(dataArr) .map(data => { data.ID = newID(); return data; }) .toArray() ); }
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda