Rxjs:为什么这个数组流没有收到新的值

时间:2016-07-13 11:25:15

标签: angular system.reactive rxjs rxjs5 subject

我在构造函数中使用Observable.from()创建了数组流,并在构造函数中订阅了它,数组正在获取更新但是订阅方法不起作用我认为,我没有得到console.log for数据,这是代码

@Component({
    selector: 'my-app',
    template: `
        <input type="text" required 
        [(ngModel)]="inputValue" name="inputValue" >  
        <button (click)="addto()">submit</button>  
     })

这是课程

export class first{

 proxySubject;
 inputValue: string;
 array = [];

constructor(){
this.proxySubject = Observable.from(this.array)
this.proxySubject.subscribe(function(data){
       console.log(data))
}

addto(){     
    this.array.push(this.inputValue)
} 
}

2 个答案:

答案 0 :(得分:3)

每次为给定的observable创建新的订阅时,

Observable.from()只检查一次提到的数组。您正在寻找的是一个可观察的阵列。其中一种方法是创建自定义addItem()函数,该函数将.push()新项目添加到数组并调用mySubject.next(myArray)。通过此设置,您可以订阅mySubject,以便在阵列内容发生变化时收到通知。

编辑:

myArray = [];

mySubject = new BehaviourSubject(myArray); // store last version for new subscribtions

addItem(item) {
  myArray.push(item);
  mySubject.next(myArray)
}

mySubject.subscribe(arr => console.log(arr))

编辑2 - 观察员:

// doesnt really help anything
let myObserverRefference;

observable = Observable.create(function (observer) {
  myObserverRefference = observer;
});

addItem() {
   myObserverRefference.next(myArray);
}

答案 1 :(得分:0)

在knockout.js中没有任何价值,这是核心功能,并且通常只有几行代码,所有的数组/对象的铃声和口哨都会改变你想要的事件。为什么事情往往会因为这些琐碎的任务而变得过于复杂?我没有得到它。