我已經創建了一個組件:Angular2 + RxJS
export class MonthView {
currentMonth: Moment = moment();
currentMonth$: Observable<Moment>;
currentMonthObserver: Observer<Moment>;
decrement: Function;
increment: Function;
constructor() {
this.currentMonth$ = new Observable((observer: Observer<Moment>) => {
this.currentMonthObserver = observer;
}).share();
const decrementCounter$: Observable<Function> = Observable.create((observer) => {
this.decrement =() => {
observer.next();
};
});
const incrementCounter$: Observable<Function> = Observable.create((observer) => {
this.increment =() => {
observer.next();
};
});
Observable
.merge(
decrementCounter$.map(() => - 1),
incrementCounter$.map(() => + 1)
)
.startWith(0)
.scan((currentCount: number, value: number) => currentCount + value)
.subscribe((count: number) => {
this.currentMonthObserver.next(this.currentMonth.clone().add(count, 'M')); //this.currentMonthObserver is undefined
});
}
}
問題: 我得到:Cannot read property 'next' of undefined
爲this.currentMonthObserver.next
線(見張貼代碼的註釋)。
注:我按照這個博客教程,我是一個完全陌生的RxJS:https://coryrylan.com/blog/angular-2-observable-data-services
模板:
<month-board [current-month]="currentMonth$"></month-board>
<button (click)="decrement()">Prev</button>
<button (click)="increment()">Next</button>
你能指出一個方法來在我得到異常之前初始化它嗎?我在一個子組件中訂閱它。 – vlio20
我不確定你的代碼是你真正想要完成的。爲了使這一步工作,你需要調用'this.currentMonth.subscribe();'。 –
我在模板上有2個按鈕,應該將用戶界面移動到下一個和上一個月。請參閱模板(在更新的問題中) – vlio20