Saltar al contenido

¿Cómo modificar datos en Observable en Angular 2?

Agradecemos tu apoyo para compartir nuestras crónicas en referencia a las ciencias informáticas.

Solución:

Puedes hacer el procesamiento en tu código de GetData, dentro del map:

// For RxJS v5 
    this.http
      .get('http://server.name/api/GetData')
      .map(result => 
         const items = 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 = 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

la idea es:

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

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  
  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()
   );

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *