how to subscribe to action success callback using ngrx and effects how to subscribe to action success callback using ngrx and effects angular angular

how to subscribe to action success callback using ngrx and effects


You can subscribe to actions in components as well:

[...]import { Actions } from '@ngrx/effects';[...]@Component(...)class SomeComponent implements OnDestroy {    destroyed$ = new Subject<boolean>();    constructor(updates$: Actions) {        updates$.pipe(           ofType(PostActions.SAVE_POST_SUCCESS),           takeUntil(this.destroyed$)        )        .subscribe(() => {           /* hooray, success, show notification alert etc.. */        });    }    ngOnDestroy() {        this.destroyed$.next(true);        this.destroyed$.complete();    }}


Based on this:https://netbasal.com/listening-for-actions-in-ngrx-store-a699206d2210 with some small modifications, as since ngrx 4 there is no Dispatcher anymore, but instead ActionsSubject:

import { ActionsSubject } from '@ngrx/store';import { ofType } from "@ngrx/effects";subsc = new Subscription();constructor(private actionsSubj: ActionsSubject, ....) {   this.subsc = this.actionsSubj.pipe(     ofType('SAVE_POST_SUCCESS')  ).subscribe(data => {     // do something...  });}ngOnDestroy() {  this.subsc.unsubscribe();}


you need to have a selector that give you the latest post

this.latestPost$ = this.store.select(fromRoot.getPost);

then you can subscribe to this.latestPost$ observable and redirect to your new route assuming you have declared latestPost$: Observable<Post>; in your component.

for more details see this example app https://github.com/ngrx/example-app