2017-04-20 1 views

Antwort

4

Jede Aktion von Ihrem beobachtbaren emittiert versendet werden wird, so was Sie brauchen, ist eine Aktion, um mehrere Aktionen zuordnen. Sie können das tun, indem Sie den Ladevorgang mit startWith() auf switchMap() Zugabe:

.switchMap(action => { 
    this.clientService.getClients() 
    .map(clients => new ClientActions.GetClientsReceived(clients) as Action) 
    .startWith(new LayoutActions.IsLoading(true)) 
); 

Manchmal kann Typisierungen falsch sein, Typoskript wird die spezifische Art Ihrer Aktion anstelle von Action. In diesem Fall wird nach der Map das Observable als Observable<ClientActionReceived> getippt, so dass ein LayoutActionLoading innerhalb von start zurückgegeben wird. Das scheint für Typoskript falsch zu sein.
Um zu vermeiden, dass Sie eine der beiden als Action zu werfen, so wird es wissen, dass es ein Observable<Action> ist.

+0

Typoskript Fehler vermeiden musste ich die letzte Zeile .startWith ( neue LayoutActions.IsLoading (true)) ändern. Wäre toll, wenn Sie das in Ihrer Antwort hinzufügen können. –

+0

Ich habe einige Erklärungen zu diesem Tippproblem hinzugefügt – Ghetolay

0

Sie können den Operator do verwenden.

Beispiel: .do(dispatchAction(...))

0

ich tue es wie folgt aus:

userRoleChange$: Observable<Action> = this.actions$ 
.ofType(userActions.USER_SWITCH_ROLE) 
.switchMap(() => Observable.of(
    {type: preFlightActions.PRE_FLIGHT_CLEAR, payload: {}}, 
    {type: detailPlanningActions.DETAIL_PLANNING_CLEAR, payload: {}}, 
    {type: uploadsActions.UPLOAD_FILTER_SET, payload: {}} 
)); 
Verwandte Themen