2016-08-15 19 views
2

私はRC5でngrxを使用しようとしていますが、いくつか有線で動作しています。状態の変更はngrxログモニタによって正しく取得されますが、サブスクライバには送信されません。ngrxと角2 RC5

しかし、私は(私は@角度/ルーター3を使用しています)私の状態の変更のすべてのページを変更すると、1つずつサブスクライバに発行されます。ここで

は私が最初のページに移動したときに最新の状態を取得しますが、後続の変更がキャプチャされなかっ取得コード

ngOnInit() { 
     this._store.dispatch(this._mediaActions.load()); 
     this._positionListener = this._store 
     .let(getMediaFolderContent()) 
     .subscribe(a => this.position = a); 

     this._store.let(getMediaFolderContent()).subscribe(a => console.log(a)); 
     this._store.select(s => s.media).subscribe(a => console.log('just a test: ', a)); 
    } 

のサンプルです。そして再び、ページに移動して戻ると、状態が変わります。

これは有効な質問のための十分なコードではないことは知っていますが、それほど多くのことがあり、すべてのコピーをどこから開始するのかわかりません。私はちょうど誰かがRC5で同様の問題を扱っています。

RC5に移行する前に、すべてのコードが機能しました。

+0

モニターに状態の変化が表示されているが、放出されていないときに最初にチェックするのは、レデューサーが新しいオブジェクトを返すことです。自由にobject.assignを使用してください。新しいオブジェクトはありません。=観測対象からの新しい放射はありません。それではないかもしれないが、それは始める場所である。 – wiredprogrammer

答えて

1

私はそれを解決することができました。私はこれが誰かを助けることを望む。

だから、問題は、私はどうなるのか、私の減速にあったが、このです:

return Object.assign(state, {something: 'something'} 

しかし、それは私が新しいオブジェクトを作成した場合、状態変化のみ放出されますが判明しました。

return Object.assign({}, state, {something: 'something'} 

はあなたに正しい方向に私を指しているため@wiredprogrammerありがとう:だから私は何をしなければならなかったことは、このような割り当てを変更しました。

+0

rc5にngrxを追加する方法を教えてください。 webstormは私にprovideStoreを追加させません –

+0

うーん..私はまたwebstormを使用しています、私はどんなエラーや警告も受けていません。 provideStore(reducers)がapp.module.ts内のプロバイダ配列の側にあることを確認します。 –

+0

私はplunkrの作業をすることができないようですが、ここで私のapp.module.tsとの単純なjsFiddleです。それが助けて欲しいhttps://jsfiddle.net/czzofLL5/ –

関連する問題