簡體   English   中英

Angular2 Observables - 重播

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM