Angular Rxjs:为什么这个数组流不接收新值
我在构造函数中使用Observable.from()创建了数组流,并在构造函数中订阅了它,数组正在更新,但订阅方法不起作用。我想,我没有获得数据的console.log,下面是代码Angular Rxjs:为什么这个数组流不接收新值,angular,system.reactive,rxjs,rxjs5,subject,Angular,System.reactive,Rxjs,Rxjs5,Subject,我在构造函数中使用Observable.from()创建了数组流,并在构造函数中订阅了它,数组正在更新,但订阅方法不起作用。我想,我没有获得数据的console.log,下面是代码 @Component({ selector: 'my-app', template: ` <input type="text" required [(ngModel)]="inputValue" name="inputValue" >
@Component({
selector: 'my-app',
template: `
<input type="text" required
[(ngModel)]="inputValue" name="inputValue" >
<button (click)="addto()">submit</button>
})
Observable.from()
每次创建给定Observable的新订阅时,只检查一次提到的数组。你要找的是一个可观察的数组。其中一种方法是创建自定义的addItem()
函数,该函数将.push()
新项推送到数组中,并调用mySubject.next(myArray)
。通过此设置,您可以订阅mySubject
,以便在数组内容发生更改时获得通知
编辑:
编辑2-观察者:
// doesnt really help anything
let myObserverRefference;
observable = Observable.create(function (observer) {
myObserverRefference = observer;
});
addItem() {
myObserverRefference.next(myArray);
}
在knockout.js中没有什么价值这是核心功能,通常只有几行代码,包含您想要的所有数组/对象更改事件。为什么对于这些琐碎的任务,事情往往会变得过于复杂,我不明白。这不会获取新的数组值,当您调用“from”时,它会获取数组中的值并立即将其转换为流。您可能希望创建一个“ReplaySubject”,并将数组值推送到构造函数中的subject,然后在addto()中推送到新值。什么也没有发生。我将proxySubject转换为ReplaySubject,并使用addto方法将新值推送到数组,让我们暂时忘记下一个方法的主题这永远不会自动发生你必须通知
subject
发出下一个值或编写自定义的observer
,如newobserable(observer=>{/*…*/observer.next(myArray);})
每次使用addto方法中的push方法更改数组时,observable都不会检测到它。从(),否,您必须手动通知主题
或自定义观察者
。这不是自动的。你能给我举个例子吗
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))
// doesnt really help anything
let myObserverRefference;
observable = Observable.create(function (observer) {
myObserverRefference = observer;
});
addItem() {
myObserverRefference.next(myArray);
}