Действие выхода из системы не работает после перезагрузки угловой страницы

#angular #ngrx #ngrx-store-4.0

#angular #ngrx #ngrx-store-4.0

Вопрос:

ПРОБЛЕМА:

После входа в приложение, когда я нажимаю на signOut кнопку, оно успешно signOut и перенаправляется на страницу входа. Но когда я обновляю страницу, попробуйте выйти из системы, тогда это ничего не даст. Кто-нибудь знает, в чем может быть проблема?

код:

 // action
export class Logout implements Action {
  readonly type = LOGOUT;
}

// effect
@Effect()
  logout$ = this.actions$
    .ofType(authAction.LOGOUT)
    .pipe(
      map( () => {
        debugger;
        this.authService.logoutUser();
        return new fromRoot.Go({
          path: ['/account/login'],
        });
      })
  );

// calling action on signout 
public signOut() {      
      this.store.dispatch(new fromStore.Logout());
    }
 

СКРИНШОТ Chrome Redux DevTools

Перед обновлением страницы: http://prntscr.com/ne3pc0

После обновления страницы: http://prntscr.com/ne3qpr (После действия выхода из системы ничего не происходит)

Ответ №1:

Попробуйте это

 import { throwError } from 'rxjs';
import { map, catchError } from 'rxjs/operators';    
// effect
@Effect()
logout$ = this.actions$.pipe(
.ofType(authAction.LOGOUT),
switchMap(() => {
    return this.authService.logoutUser()
        .pipe(map(() => {
            return new fromRoot.Go({path: ['/account/login']})
         }), 
         catchError((error: any) =>{
            return of(error)    
         }), 
         finalize(() => {
            //do something like hide loader
         }))
  })  
);
 

дайте мне знать в случае возникновения каких-либо проблем

Комментарии:

1. Стоило бы добавить некоторое объяснение того, почему вы считаете, что это сработает. Также я думаю, вы хотели сказать .pipe(map(() => ...)) , что предполагается, что используется rxjs6

2. Я протестировал его и его работу. Также это можно сделать и с помощью .pipe

3. @PawanJangid это не работает. Я попытался добавить отладчик в эффект, но после обновления страницы элемент управления не попадает внутрь эффекта после действия.

4. @Johar Zaman: Можете ли вы попробовать один сценарий Login-> Logout-> Login-> Logout без обновления страницы… И после этого обновите страницу и проверьте консоль на наличие ошибок

5. @PawanJangid хорошо, я могу попробовать