【问题标题】:Angular - modify observable valueAngular - 修改可观察值
【发布时间】:2017-09-04 12:49:42
【问题描述】:

我的angular 组件中有一个接收可观察对象的函数。我需要修改可观察对象内的对象,然后再次将其“放回”可观察对象并返回。到目前为止,这是我的代码:

myImmobili =  Observable<Valutazione[]>;
newImmobile(immobili: Observable<Valutazione[]>) {

    immobili.subscribe(
      imm => { 
        console.log(imm);
        imm.push(new Valutazione());
        console.log(imm);
        this.myImmobili = //some code here
      }
    );
  }

谁能给我一个提示?也许有更好的方法来修改我的数组而不订阅它,但我找不到它。谢谢。

编辑

newImmobile() {

    this.immobili.subscribe(i => console.log('before', i));
    this.immobili.map(imm => {
      imm.push(new Valutazione());
      console.log('inside', imm);
    }
    );
    this.immobili.subscribe(i => console.log('after', i));
  }

现在它完全跳过了地图功能。 'before' 和 'after' 日志显示相同的数组,而 'inside log' 不显示。

【问题讨论】:

  • 您是要更改整个对象还是仅根据某些条件修改数组的值?
  • 只有数组的值,就像我在 subscribe() 调用中所做的那样。我需要返回一个包含修改后的数组的 Observable。
  • 使用'map'操作符来改变值。

标签: angular typescript observable


【解决方案1】:

您可以使用地图而不是订阅:

immobili.map(
  imm => { 
    console.log(imm);
    imm.push(new Valutazione());
    console.log(imm);
    this.myImmobili = //some code here
  }
);

【讨论】:

  • 我按照你和@Basavaraj Bhusani 的建议更改了我的代码,但它完全跳过了地图运算符的执行。
  • 您需要在终点至少订阅一次。你不能只使用地图。它必须与订阅相结合。
  • 就是这样。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-20
  • 2019-12-22
  • 2011-03-25
  • 2021-10-02
  • 2021-07-05
  • 2017-06-11
  • 2021-04-13
相关资源
最近更新 更多