Как изменить элементы в сервисе, прежде чем вернуть его клиенту Angular? - PullRequest
0 голосов
/ 07 мая 2019

При возврате данных из моей службы доступа к данным я получаю неопределенное значение только после изменения ответа. Что не так с моей трубой?

.pipe(
  map(result => result['dimensions']),
  map(result => result.forEach(element => {
    result.dimensionItems = element.dimensionItems.map(item => {
      item.parentId = result.dimensionId;
      item.dimensionItemId = Math.floor(Math.random() * 1000);
    });
  })),
  tap(result => console.log('Aiiiaiiii: ', result)),
  catchError(this.handleError)
);

1 Ответ

1 голос
/ 07 мая 2019

forEach возвращает неопределенное значение [1], поэтому вам нужно изменить свой код следующим образом:

.pipe(
  map(result => result['dimensions']),
  map(result => {
    result.forEach(element => {
      result.dimensionItems = element.dimensionItems.map(item => {
        item.parentId = result.dimensionId;
        item.dimensionItemId = Math.floor(Math.random() * 1000);
      });
    });
    return result; // You need to return the result after the foreach.
  }),
  tap(result => console.log('Aiiiaiiii: ', result)),
  catchError(this.handleError)
);

Как видно из комментария, вам необходимо вернуть результат после того, как выманипулировали им с помощью forEach.

References [1] - Array.prototype.forEach () - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

...