[英]Angular2 Observables — Replay
我正在嘗試設置一個Angular2 Observable,它將重放最新的值。
import {Injectable} from 'angular2/core';
import {Observable} from 'rxjs/Observable';
@Injectable()
export class RefinementService {
refining: any;
private r: any;
constructor() {
this.refining = new Observable(observer => this.r = observer).replay(1);
}
}
我不斷得到錯誤說明:
類型Observable <{}>上不存在屬性“重放”。
和
this.refining.replay不是一個函數
有沒有人成功實施過一個可以重新向新用戶發放最新價值的觀察者?
根據MIGRATION指南, RxJS5 replay
被重命名為publishReplay
。
因此,添加正確的運算符應該沒問題
import 'rxjs/add/operator/publishReplay';
// Component
this.refining = new Observable(observer => this.r = observer).publishReplay(1);
您也可以使用ReplaySubject 。
我想你可以嘗試以這種方式重構你的代碼:
import {Injectable} from 'angular2/core';
import {Observable,ReplaySubject} from 'rxjs/Rx';
@Injectable()
export class RefinementService {
refining: any;
private r: any;
constructor() {
this.refining = new Observable(observer => this.r = observer)
.subscribe(new ReplaySubject(1));
}
}
這是相應的plunkr: https ://plnkr.co/edit/TrCf8JEGO1toEMqiWg3D ? p = preview。
希望它對你有幫助,蒂埃里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.