1

我在构造函数中使用 Observable.from() 制作了数组流,并在构造函数中订阅了它,数组正在更新,但订阅方法不起作用我想,我没有为数据获取 console.log,这里是编码

@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)
} 
}
4

2 回答 2

3

Observable.from()每次创建给定 observable 的新订阅时,只检查一次提到的数组。您正在寻找的是一个可观察的数组。其中一种方法可以是创建自定义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);
}
于 2016-07-13T11:51:07.327 回答
0

在 knockout.js 中,这是核心功能毫无价值,而且通常只有几行代码,其中包含您想要的所有花里胡哨的数组/对象更改事件。为什么事情往往会因为这些琐碎的任务而变得过于复杂,我不明白。

于 2017-11-30T23:41:48.157 回答