Магазин ngrx предназначен для управления состоянием.В итоге мы используем одностраничное приложение.При обновлении страницы каждый источник, включая хранилище ngrx, будет обновлен.
В вашем случае для вошедшего в систему пользователя у вас будет файл cookie.
Чтобы сохранить информацию о пользователе, вам необходимозапрашивайте свой сервер только один раз, когда приложение полностью загружено в браузере.
Для этого в app.module.ts используйте APP_INITIALIZER
провайдера, что-то вроде ниже,
providers: [
...
SessionProvider,
{ provide: APP_INITIALIZER, useFactory: sessionProviderFactory, deps: [SessionProvider], multi: true },
...
]
SessionProviderFactory.ts
export function sessionProviderFactory(provider: SessionProvider) {
return () => provider.load();
}
SessionProvider.ts
@Injectable()
export class SessionProvider {
constructor(private httpClient: HttpClient, private store: Store<AppState>) { }
load(): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
this.httpClient.get('/rest/v1/user').subscribe(
(res: UserModel) => {
// in this step, store the value in the ngRx store
this.store.dispatch(new Login(res));
resolve(true);
},
(error) => {
//error handling..
}
);
});
}
}