Typescript 将数组映射到可观察对象,更新数组传播到可观察对象?

Typescript 将数组映射到可观察对象,更新数组传播到可观察对象?,typescript,angular,rxjs,rxjs5,Typescript,Angular,Rxjs,Rxjs5,我正在从数组中创建可观察对象 当我使用简单的“map”而不使用+“is a number”加法时,所有操作都有效 如何使用此加法生成可观察的变换数据 这对于我使用rxjs跟踪状态和实施不变性至关重要,我只会更改状态,rxjs复杂函数将实时解析数据 我知道有一些解决方案,但我需要这个简单的例子来解决问题 有人吗 import { Component } from '@angular/core'; import * as Rx from 'rxjs/Rx' import { Observable }

我正在从数组中创建可观察对象

当我使用简单的“map”而不使用+“is a number”加法时,所有操作都有效

如何使用此加法生成可观察的变换数据

这对于我使用rxjs跟踪状态和实施不变性至关重要,我只会更改状态,rxjs复杂函数将实时解析数据

我知道有一些解决方案,但我需要这个简单的例子来解决问题

有人吗

import { Component } from '@angular/core';
import * as Rx from 'rxjs/Rx'
import { Observable } from 'rxjs'

@Component({
  selector: 'my-app',
  template: `
    <button (click)="addToArray()">Add</button>
    <ul>
      <li *ngFor="let item of data$ | async">{{ item }}</li>
    </ul>


  `
})
export class AppComponent {

  data = ["one","two","three"]
  data$: Observable<Array<string>>;

  ngOnInit() {
    this.data$ = Rx.Observable.from(this.data)
      .map(data => {
        return data + " is a number"
      })
  }

  addToArray() {
    this.data.push('more numbers')
  }
}
从'@angular/core'导入{Component};
从“rxjs/Rx”导入*作为Rx
从“rxjs”导入{observatable}
@组成部分({
选择器:“我的应用程序”,
模板:`
添加
    {{item}
` }) 导出类AppComponent{ 数据=[“一”、“二”、“三”]
data$:Observable

到底是什么故障?映射函数对我来说非常好。你是在说类型脚本吗?这是可行的,没问题。但是当你将它分配给这个。data$然后用异步管道订阅时,它就不起作用了。尝试复制粘贴,它就不起作用了。重要的是当我添加新元素时,让一切都传播“更新数组传播到可观测”我不太确定这里到底有什么问题,但是,你不能从数组中创建一个可观察对象,然后将更多的值推送到数组中以更新可观察对象。听起来你可能需要一个主题…通读这篇文章,它似乎涵盖了你要找的内容。我添加了新的plunkr:。在本例中,我只需要以某种方式添加“x”可以观察到,在“x”上执行变换在返回之前。现在只返回x所有的工作,但我错过了转换部分,因为它是完整的。如果你想在每个新项目上进行转换,我可以写出来。转换你的原始数组有点奇怪,因为它是硬编码的,你可以事先手动完成。到底是什么失败了?映射函数非常完美e对我来说,你是在说类型脚本吗?这很有效,没问题。但是当你把它分配给这个.data$然后用| async pipe订阅时,它就不起作用了。尝试复制粘贴,它就不起作用了。重要的是当我添加新元素时,要让所有东西都传播良好。“更新数组传播到可观察的”我不太确定这里到底有什么问题,但是,你不能从数组中创建一个可观察对象,然后将更多的值推送到数组中以更新可观察对象。听起来你可能需要一个主题…通读这篇文章,它似乎涵盖了你要找的内容。我添加了新的plunkr:。在本例中,我只需要以某种方式添加“x”可以观察到,在返回之前对“x”执行转换。现在只返回x所有工作都可以,但我错过了转换部分,因为它是完整的。如果您想对每个新项进行转换,我可以写出来。转换原始数组有点奇怪,因为您可以事先手动执行,因为它是硬编码的。