アプリケーションの ngrx 効果の 1 つに問題があります。私は基本的に、ルーターストアの を使用してconcatMap()
ANDgo()
ナビゲートを使用して複数のアクションを実行しようとしています。
効果は次のとおりです。
@Effect()
loadPersonalInfoAndSignin$: Observable<Action> = this.actions$
.ofType(session.ActionTypes.LOAD_PERSONAL_INFO)
.map((action: LoadPersonalInfoAction) => action.payload)
.do(sessionToken => {
localStorage.setItem('authenticated', 'true');
localStorage.setItem('sessionToken', sessionToken);
})
.switchMap(() => this.userAccountService
.retrieveCurrentUserAccount()
.concatMap(currentUserAccount => [
new LoadUserAccountAction(currentUserAccount),
new SigninAction(),
new LoadMessagesAction({})
])
)
.mapTo(go(['/dashboard']));
を削除すると、配列.mapTo(go(['/dashboard']))
内の 3 つのアクションすべてが対応する効果に正常にディスパッチされます。concatMap
したがって、なぜ mymapTo(go(...
が配列内の最後の 2 つのアクション (つまりSigninAction
& LoadMessagesAction
) を対応するエフェクトにディスパッチしないのか疑問に思っています..
誰か助けてくれませんか?
編集:次のようmapTo
に変更:do
.do(go(['/dashboard']));
次のエラーが発生します。
ERROR in /Users/julien/Documents/projects/bignibou/bignibou-client/src/app/core/store/session/session.effects.ts (55,9): Argument of type 'Action' is not assignable to parameter of type 'PartialObserver<SigninAction>'.
Type 'Action' is not assignable to type 'CompletionObserver<SigninAction>'.
Property 'complete' is missing in type 'Action'.