2016-08-05 16 views
0

ngrx.storeと状態を使用すると、バグ(?)に直面しています。Observable.switchMapは動作せず、エラーもありません

新しい状態のためにディスパッチした後、レデューサーは新しい状態を返しません。は何もありません。購読してもエラーマッサージはありません。 switchMapを削除すると、コードはになり、サブスクライバは彼が得た値を取得します。

私は私ができる限り小さな私のコードを最小化:

public a$:Observable<any>; 
    constructor(private _userService:UserService, private _store:Store<any>) 
    { 
    this.a$=this._store 
     .select(state=>state) 
     .switchMap(state=> 
     { 
     return Observable.from(["1"]); //for simplicity. 
     }); 
    this.a$.subscribe(
     something=>{ 
     console.log(something); 
     }, 
     error=>{ 
     console.log(error); 
     } 
    ); 
    } 

マイ減速:

export const connectedUserReducer = (state = initialState, action:Action) => 
{ 
    if(action==null || action.type==null) 
    return state; 
    switch (action.type) { 
    case updateConnectedUser: 
     return Object.assign({},state); <<<-- It comes here and then nothing heppends.<<-- 
    default: 
     return state; 
    } 
}; 

私のように、インポートswitchMapをしました: "インポート 'rxjs /追加/オペレータ/ switchMap';"

答えて

1

SwitchMapはrxjs演算子です。そのため、バグの場合はngrx /ストアのバグではないでしょう。

https://plnkr.co/edit/0Ul8S0VlRwuBUAOuYDKG?p=preview

this.userList = this.userListService.userList.switchMapTo(Observable.from([[new User(1, "Mr. Grant")]])); 

私はすでに別の例から設定していた古いplunkerを使用していますが、あなたがコンポーネントに見れば、私は(switchMapに似switchMapToを追加しましたが、それだけでは通りません関数に対するObservableの元の値)。すべてが新しいObservableの罰金に切り替わります。私はあなたのコードのセットアップの残りの部分はわからないが、うまくいけばこれを見てあなたのコードで何が間違っているかもしれないのいくつかのアイデアを与えるだろう。

投稿したコードに基づいて、私は正直なところ、なぜそれがうまくいかないのか分かりません。エラーはあなたのアプリや設定のどこかにあるかもしれません。

関連する問題