web-dev-qa-db-ja.com

Angular2Observables-リプレイ

最新の値を再生するAngular2Observableをセットアップしようとしています。

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);
    }
}


次のようなエラーが繰り返し発生します。

プロパティ 'replay'はタイプObservable <{}>に存在しません。

そして

this.refining.replayは関数ではありません


新しいサブスクライバーに最新の値を再送信するオブザーバブルの実装に成功した人はいますか?

12
JRulle

[〜#〜] migration [〜#〜] ガイドによると RxJS5replaypublishReplayに名前が変更されました。

したがって、正しい演算子を追加することで問題がないはずです

import 'rxjs/add/operator/publishReplay';

// Component
this.refining = new Observable(observer => this.r = observer).publishReplay(1);

ReplaySubject も使用できます。

20
Eric Martinez

私はあなたがあなたのコードをこのように再現しようとすることができると思います:

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));
  }
}

対応するプランカーは次のとおりです: https://plnkr.co/edit/TrCf8JEGO1toEMqiWg3D?p=preview

それがあなたを助けることを願っています、ティエリー

3