Наблюдаемый - добавить данные с картой? - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть этот код

this.store
  .select(s => s.pins)
  .pipe(filter(s => !s.loading))
  .subscribe(pinsState => {
    this.listItems = pinsState.pins;
  });

pins - это массив объектов.

Я хочу пересчитать значение в каждом объекте в массиве, когда получаю данные.Например:

pins.calculatedval = calcnewval()

Как мне использовать оператор map для этого?Или есть другой оператор, который я должен использовать?

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете использовать tap(), чтобы изменить контакты.Вам не нужно ничего возвращать, поток будет по-прежнему содержать pinState из this.store.

this.store
    .pipe(
         filter(s => !s.loading),
         tap(s => s.pins.forEach(pin => pin.calculatedVal = calcnewval()))
     )
     .subscribe(x => this.listItems = x.pins);

Также в исходном примере вы используете select(), который, как я считаю, устарел в пользу map() и также приведет к ошибке, так как фильтр использовал свойство из родительского объекта, к которому вы привязаны.

...