Ich habe ein Problem mit einem der ngrx-Effekte meiner Anwendung. Ich versuche im Grunde, mehrere Aktionen unter Verwendung concatMap()
UND Navigieren mit dem Router Store go()
auszuführen. HierIst es möglich, sowohl ein Array von Aktionen zu versenden als auch von einem ngrx-Effekt zu navigieren?
ist der Effekt:
@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']));
Wenn ich die .mapTo(go(['/dashboard']))
entfernen, dann alle drei Aktionen im concatMap
Array erfolgreich in ihre entsprechenden Effekte ausgelöst werden.
ich deshalb frage mich, warum meine mapTo(go(...
die letzten beiden Aktionen in der Anordnung verursacht (das heißt SigninAction
& LoadMessagesAction
) zu ihren entsprechenden Auswirkungen nicht versandt ..
bitte jemand helfen?
bearbeiten: mapTo
zu do
Ändern Sie wie folgt vor:
.do(go(['/dashboard']));
Ergebnisse in dem folgenden Fehler:
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'.
Haben Sie versucht, eine 'do' anstelle des' mapTo' verwenden? – olsn
Nein, habe ich nicht. Lass es mich versuchen. – balteo
Ich habe meinen Beitrag bearbeitet, um Ihren Vorschlag zu berücksichtigen. – balteo