ngrx Carrega dados do servidor apenas se a loja estiver vazia

Eu tenho um conjunto estático de dados, uma lista de países, que são usados em alguns componentes. Esses dados são carregados nongOnInit() desses componentes, mas gostaria de carregá-los apenas se for a primeira vez que solicito os dados (o armazenamento está vazio). Todas as vezes que carrego o componente, gostaria de simplesmente usar os dados da loja sem "atualizá-los".

Como isso é possível usando o ngrx?

Estou usando efeitos. É assim que meu código se parece:

O 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());
}

O efeito:

    @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)))
  );

E o redutor:

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
        });
    }, {});

Obrigado Gab

questionAnswers(3)

yourAnswerToTheQuestion