ngrx Cargar datos del servidor solo si la tienda está vacía

Tengo un conjunto estático de datos, una lista de países, que se utilizan en algunos componentes. Estos datos se cargan en elngOnInit() de estos componentes, pero me gustaría cargarlos solo si es la primera vez que solicito los datos (la tienda está vacía). Cada vez que cargue el componente, me gustaría simplemente usar los datos de la tienda sin "actualizarlo".

¿Cómo se puede lograr esto usando ngrx?

Estoy usando efectos. Así es como se ve mi código:

El componente:

export class EditPageComponent implements OnInit {
countries$: Observable<Country[]>

constructor(private store: Store<fromContacts.State>) {
    this.countries$ = store.select(fromContacts.getCountriesEntities);
}
ngOnInit() {
   this.store.dispatch(new countries.Load());
}

El efecto:

    @Effect()
      loadCollection$: Observable<Action> = this.actions$
        .ofType(countries.LOAD)
        .switchMap(() =>
          this.countriesService
        .getCountries()
        .map((countriesList: Country[]) => {
          return new countries.LoadSuccess(countriesList);
        })
        .catch(error => of(new countries.LoadFail(error)))
  );

Y el reductor:

case countries.LOAD_SUCCESS: {

      const countriesList: Country[] = action.payload;
      const reducedCountries: { [id: string]: Country } = countriesList.reduce((countrs: { [id: string]: Country }, countr: Country) => {
        return Object.assign(countrs, {
            [countr.code]: countr
        });
    }, {});

Gracias gab

Respuestas a la pregunta(3)

Su respuesta a la pregunta